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

vltsax25  于 2023-08-02  发布在  Swift
关注(0)|答案(4)|浏览(179)

我试图找到一种方法来向后跳转到WKWebView历史记录中的起始点。
假设我有一个主/起始页(WKWebView init),其中包含指向google.com的链接。
所以我点击链接,然后在google.com上点击另一个链接maps.google.com。所以我离我的起始页只有两步之遥。
如何在不重新加载或重新加载WKWebView的情况下直接跳回到主页面/起始页?
我尝试了以下方法,但没有成功:

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

字符串

fdbelqdn

fdbelqdn1#

注意-itemAtIndex的索引参数的含义:
“所需列表项相对于当前项的索引:0表示当前项,-1表示前一项,1表示后一项,依此类推。https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKBackForwardList_Ref/index.html#//apple_ref/occ/instm/WKBackForwardList/itemAtIndex:
使用适当的负索引,或使用backList中的第一项。

nkoocmlb

nkoocmlb2#

纯迅捷解决方案:

// 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!)

字符串

cgfeq70w

cgfeq70w3#

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

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

字符串

qhhrdooz

qhhrdooz4#

您希望访问backList中的第一个项目,如果可用(如果您已向前导航,即)-这将是您的主页。

@objc func goHome() {
    if (webView.backForwardList.backList.count > 0) {
        webView.go(to: webView.backForwardList.backList[0])
    }
}

字符串

相关问题