Swift/JS 恢复 WebView 后退列表
Swift/JS Restore WebView Back Forward List
我想弄清楚如何在 WKWebView 中恢复后退列表。 Apple 默认 BackForwardList 为只读。但是,FireFox、Chrome 和其他移动浏览器能够在每个会话中恢复它。
这是 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. There are many references in the code to internal://
, and an InternalURL
struct in URLExtensions.swift,这就是他们正在做的事情。该文件中也有会话恢复的东西,例如 var isSessionRestore: Bool
.
如果您还没有,请克隆该项目并在 Xcode 中打开它以便于导航和搜索。
我想弄清楚如何在 WKWebView 中恢复后退列表。 Apple 默认 BackForwardList 为只读。但是,FireFox、Chrome 和其他移动浏览器能够在每个会话中恢复它。
这是 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. There are many references in the code to internal://
, and an InternalURL
struct in URLExtensions.swift,这就是他们正在做的事情。该文件中也有会话恢复的东西,例如 var isSessionRestore: Bool
.
如果您还没有,请克隆该项目并在 Xcode 中打开它以便于导航和搜索。