【问题标题】:How to goBack to startpoint in a WKWebView History如何回到 WKWebView 历史记录中的起点
【发布时间】:2016-06-06 07:04:49
【问题描述】:

我正在尝试找到一种方法可以向后跳到 WKWebView 历史记录中的起点。

假设我有一个主/起始页 (WKWebView init),其中包含指向 google.com 的链接。

所以我点击链接,然后在 google.com 上点击另一个链接 ma​​ps.google.com。所以我离起始页只有 2 步之遥。

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

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

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

【问题讨论】:

    标签: ios objective-c xcode swift wkwebview


    【解决方案1】:

    纯粹的快速解决方案:

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

    【讨论】:

      【解决方案2】:

      注意 -itemAtIndex 的 index 参数的含义:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-05
          相关资源
          最近更新 更多