我試圖通過使用history.pushState
來檢測YouTube上的頁面更改,但似乎從未觸發。我最終想從一個Tampermonkey/Greasemonkey的腳本這方面的工作,爲此,我明白你需要注入腳本到實際的頁面,我已經像這樣做,但無濟於事:YouTube未觸發history.push狀態
html =
"var oldState = history.pushState;"+
"history.pushState = function() {" +
"alert('url changed');" +
"return oldState.apply(this);" +
"}";
var head = document.getElementsByTagName("body")[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.innerHTML = html;
head.appendChild(script);
我也嘗試從調試控制檯運行相同的代碼:
var oldState = history.pushState;
history.pushState = function() {
alert('url changed');
return oldState.apply(this);
};
但是,似乎也沒有做到這一點。任何人都知道這裏發生了什麼?
是什麼讓你覺得'history.pushState'會檢測到變化?該方法_adds_是歷史記錄的入口。檢測change_需要監聽popstate事件。 – CBroe
我重寫了這個函數,或者至少是這個想法。 'onpopstate'似乎只在按下後退和前進按鈕時觸發(從我測試過的)。請參閱http://stackoverflow.com/a/4585031/1107110 –
啊,好的。首先檢查了腳本插入是否真的有效?就像試圖在那裏放置一個'console.log'語句一樣,看看是否生成了預期的輸出... – CBroe