2017-02-27 7 views
3

Swift でハイブリッドiOSアプリケーションを開発し、WKWebViewでhistory.pushstate()を検出したいと考えています。 WKWebViewのメソッドをオーバーライドしましたが、何も検出できませんでした。WKWebViewでhistory.pushstateを検出する方法

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

関連する問題