'Swift/JS Restore WebView Back Forward List
I am trying to figure out how to restore the back forward list in a WKWebView. Apple defaults the BackForwardList to be readonly. However, FireFox, Chrome, and other mobile browsers are able to restore it each session.
This is how FireFox restores it on iOS: https://github.com/mozilla-mobile/firefox-ios/wiki/History-Restoration-in-WKWebView-(and-Error-Pages)
Here is the JS/HTML code that's used to access the DOM History API: https://github.com/mozilla-mobile/firefox-ios/blob/041c85483b1aa4a4e357d8bd9419550e4f20347a/Client/Assets/SessionRestore.html
In order to load this file and restore a WKWebView's history, do you need to spin up a local server within the app?
It seems like you would need to in order to access a local://
url that points to this JS file.
Solution 1:[1]
Yes, that's what they are doing, according to WebServer.swift. There are many references in the code to internal://
, and an InternalURL
struct in URLExtensions.swift. There are session restoration things in that file as well, such as var isSessionRestore: Bool
.
If you haven't already, clone the project and open it in Xcode for easier navigation and searching.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Chad Parker |