如何回到 WKWebView 历史记录中的起点

How to goBack to startpoint in a WKWebView History

我正在尝试找到一种方法来返回到 WKWebView 历史记录中的起点。

假设我有 Main/Start-Page (WKWebView init) 和 Link 到 google.com。

所以我点击 Link,然后点击 google.com 我点击另一个 link 地图。 google.com。所以我离我的起始页只有 2 步之遥。

如何在不重新加载或重新初始化 WKWebView 的情况下直接跳回 Main/Startpage?

我尝试了以下实现但没有成功:

-(void)backNavigationToStart{
    if([vuMain canGoBack]){
        WKBackForwardList *list = [vuMain backForwardList];
        if(list && list.backList){
            WKBackForwardListItem *item = [list itemAtIndex:0];
            [vuMain goToBackForwardListItem:item];
        }
    }
}

注意 -itemAtIndex 的索引参数的含义:

“所需列表项相对于当前项的索引:当前项为0,前一项为-1,后一项为1,依此类推。” https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKBackForwardList_Ref/index.html#//apple_ref/occ/instm/WKBackForwardList/itemAtIndex:

使用适当的负索引,或使用 backList 中的第一项。

您可以使用 JavaScript 导航到浏览器历史记录中的第一项。

extension WKWebView {
    func goBackToFirstItemInHistory() {
        let script = "window.history.go(-(window.history.length - 1));"
        evaluateJavaScript(script) { (_, error) in
            print(error)
        }
    }
}

纯swift溶液:

    // find first item in history
    let historySize = webView.backForwardList.backList.count
    let firstItem = webView.backForwardList.item(at: -historySize)

    // go to it!
    webView.go(to: firstItem!)