如何回到 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!)
我正在尝试找到一种方法来返回到 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!)