我有一个函数可以追溯到我的 WKWebView 历史记录。这按预期工作,除非回溯历史超过 2 个。此时 evaluateJavasScript 功能不再发生在正确的历史记录项上。
func backButtonClicked() {
webView.goBack()
webView.evaluateJavaScript("arrivedFromBackButton()") { (response, error) -> Void in
print(response) // webpage outputs the title of the page
}
}
页面标题依次为:主页 -> 用户信息 -> 详情 -> 历史
如果在“History”上,我一遍又一遍地调用 backButtonClicked(),则会发生此输出:
evaluateJavaScript 似乎发生在前一页上,但仅当我尝试返回历史记录中的 3 个或更多位置时才发生。有没有人知道是什么原因造成的?我将 evaluateJavaScript 包装在 DispatchQueue.main.async 中只是为了确保它在同一个线程上,但仍然没有任何运气。
最佳答案
使用 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) 似乎解决了我的问题。它也在 goBack(_:) 函数的末尾被调用。我只需要创建一个 bool 变量,可以检查它是否应该触发 evaluateJavaScript
关于javascript - WKWebView 返回(_ :) evaluateJavaScript Fails if going back more than 2 in history,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49240864/