如何在WKWebView中检测history.pushstate

时间:2017-02-27 01:34:04

标签: javascript ios swift

我使用Swift开发了混合iOS应用程序 并希望在WKWebView中检测history.pushstate()。 我确实覆盖了WKWebView的方法,但我找不到任何东西。

有没有办法或技巧来检测history.pushstate()

1 个答案:

答案 0 :(得分:3)

这肯定是一种解决方法,但如果允许您编辑内置对象的属性(如在大多数浏览器中),您可以包装这两个函数并使用拦截处理程序来跟踪它们的调用时间:



function track (fn, handler) {
  return function interceptor () {
    handler.apply(this, arguments)
    return fn.apply(this, arguments)
  }
}

history.pushState = track(history.pushState, function (state, title, url) {
  // do something with `state, `title`, and `url`
  console.log('pushState called with:', { state: state, title: title, url: url })
})


history.replaceState = track(history.replaceState, function (state, title, url) {
  // do something with `state, `title`, and `url`
  console.log('replaceState called with:', { state: state, title: title, url: url })
})

history.pushState(null, 'Title 1', '/example-page')