我想弄清楚如何在 WKWebView 中恢复后退列表。 Apple 默认 BackForwardList 为只读。但是,FireFox、Chrome 和其他移动浏览器能够在每个 session 中恢复它。
这是 FireFox 在 iOS 上恢复它的方式:https://github.com/mozilla-mobile/firefox-ios/wiki/History-Restoration-in-WKWebView-(and-Error-Pages)
这是用于访问 DOM 历史 API 的 JS/HTML 代码:https://github.com/mozilla-mobile/firefox-ios/blob/041c85483b1aa4a4e357d8bd9419550e4f20347a/Client/Assets/SessionRestore.html
为了加载此文件并恢复 WKWebView 的历史记录,您是否需要在应用程序中启动本地服务器?
为了访问指向此 JS 文件的 local://
url,您似乎需要这样做。
最佳答案
是的,根据 WebServer.swift,这就是他们正在做的事情.代码中有很多对 internal://
的引用,以及 URLExtensions.swift 中的 InternalURL
结构。 .该文件中也有 session 恢复内容,例如 var isSessionRestore: Bool
。
如果您还没有,请克隆项目并在 Xcode 中打开它以便于导航和搜索。
关于Swift/JS 还原 WebView 后退转发列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37241019/