我使用Swift开发了混合iOS应用程序 并希望在WKWebView中检测history.pushstate()。 我确实覆盖了WKWebView的方法,但我找不到任何东西。
有没有办法或技巧来检测history.pushstate()
答案 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')