2017-02-27 150 views
3

我开发了混合iOS应用程序Swift 并希望检测WKWebView中的history.pushstate()。 我没有覆盖WKWebView的方法,但我无法检测到任何东西。如何检测WKWebView中的history.push状态

有没有一种方法或技巧来检测history.pushstate()

+0

你什么意思通过覆盖多少? – gyre

+0

@gyre这意味着我使用了“func webView(blah blah blah)” – hoi

回答

2

这无疑是一个解决办法,但如果你被允许编辑的特性内置对象(像在大多数浏览器),你可以用这两个功能和使用拦截处理程序来跟踪它们被调用时:

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')