Swift/JS 还原 WebView 后退转发列表

标签 swift webkit wkwebview

我想弄清楚如何在 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/

相关文章:

css - 是否有类似 CSS 的源映射之类的东西?

ios - 使用 WKHTTPCookieStore 删除 cookie

javascript - 如何从 webview 使用 UIImagePickerController

ios - WKWebView 包装器 - 加载 WKWebView 中的所有链接

ios - 无法控制将引用对象拖动到 Xcode 9.2 (9C40b) iOS 项目中的 ViewController

html - 为什么 Android 和 iOS 浏览器默认呈现的网站宽度比设备屏幕宽度宽?

ios - 在 UIWebView 上覆盖一个刷新按钮

ios - WKWebView goBack 需要两次调用

ios - Swift:找不到 || 的重载接受提供的参数

ios - 在 Swift 中解析 JSON 中的嵌套数组