我试图找到一种方法在WKWebView
历史记录中向后跳转到起点。
我们说我有一个Main / Start-Page(WKWebView init
),其中包含指向google.com的链接。
所以,我点击链接,然后点击 google.com ,点击其他链接 maps.google.com 。所以我离开始页面只有两步之遥。
如何直接跳回Main / Startpage而无需重新加载或重新启动WKWebView
?
我尝试过以下实施,但没有成功:
-(void)backNavigationToStart{
if([vuMain canGoBack]){
WKBackForwardList *list = [vuMain backForwardList];
if(list && list.backList){
WKBackForwardListItem *item = [list itemAtIndex:0];
[vuMain goToBackForwardListItem:item];
}
}
}
答案 0 :(得分:4)
注意-itemAtIndex的索引参数的含义:
“所需列表项目相对于当前项目的索引:当前项目为0,前一项目为-1,后续项目为1,依此类推。”https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKBackForwardList_Ref/index.html#//apple_ref/occ/instm/WKBackForwardList/itemAtIndex:
使用适当的否定索引,或使用backList中的第一项。
答案 1 :(得分:2)
您可以使用JavaScript导航到浏览器历史记录中的第一项。
extension WKWebView {
func goBackToFirstItemInHistory() {
let script = "window.history.go(-(window.history.length - 1));"
evaluateJavaScript(script) { (_, error) in
print(error)
}
}
}
答案 2 :(得分: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!)