2017-02-27 172 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')