当您浏览Twitch上的所有游戏并单击一个游戏时,它会动态获取内容,而无需重新加载页面。网址也从https://www.twitch.tv/directory更改为https://www.twitch.tv/directory/game/GameNameHere。如何收听此网址更改?

我尝试在以下代码(在TamperMonkey脚本中)中使用window.onpopstate,但不会触发该事件。

$(document).ready(function() {
    console.log("Running"); // works

    window.onpopstate = function(e) {
        console.log("onpopstate triggered");
    };
});


编辑:经过进一步调查,看来对于TamperMonkey,我必须使用unsafeWindow而不是window来使onpopstate正常工作。但是,onpopstate仅在浏览器后退或前进时适用。对于其他情况,请参考已接受的答案。

最佳答案

看这里:
How to get notified about changes of the history via history.pushState?

基本上,您将要拦截对pushState和replaceState的调用。如果您不能这样做,则可以(丑陋地)使用setInterval监视URL的更改。

10-07 14:30