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 中打开它以便于导航和搜索。