WKWebView goBack(_ :)在历史记录中回溯超过2时,evaluateJavaScript失败

时间:2018-03-12 17:09:42

标签: javascript ios swift wkwebview

我的功能可以追溯到我的WKWebView历史记录中。除了在历史记录中回溯超过2时,这正如预期的那样工作。此时,evaluateJavasScript功能不再出现在正确的历史记录项上。

func backButtonClicked() {
    webView.goBack()

    webView.evaluateJavaScript("arrivedFromBackButton()") { (response, error) -> Void in
        print(response) // webpage outputs the title of the page
    }
}

按顺序排列的页面标题是:Main - >用户信息 - >详细信息 - >历史

如果在"历史"而我backButtonClicked()一遍又一遍地调用这个输出:

  1. 详细
  2. 用户信息
  3. 用户信息
  4. evaluateJavaScript似乎发生在上一页,但只有当我尝试回到历史中的3个或更多位置时才会发生。有没有人对这会导致什么有任何想法?我已将evaluateJavaScript包裹在DispatchQueue.main.async只是为了确保它在同一个帖子上,但仍然没有运气。

1 个答案:

答案 0 :(得分:0)

使用func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)似乎已经解决了我的问题。它也在goBack(_:)函数的末尾调用。我只需要创建一个布尔变量,可以检查它是否应该触发evaluateJavaScript