在Twitch.tv上收听URL更改

时间:2016-04-17 05:29:38

标签: javascript

当您在Twitch上浏览所有游戏并点击游戏时,它会动态获取内容而无需重新加载页面。该网址也会从<p id="live"></p> <script src="//code.jquery.com/jquery-1.11.2.min.js"></script> <script> $.ajax({ url:'https://api.twitch.tv/kraken/streams/DailyMafia', dataType:'json', success:function(stream) { document.getElementById("live").innerHTML="CURRENTLY LIVE WITH ".concat(parseInt(stream.stream.viewers), " VIEWERS."); }, error:function() { document.getElementById("live").innerHTML="CURRENTLY OFFLINE."; } }); </script> 更改为https://www.twitch.tv/directory。我怎么能听到这个网址改变?

我尝试在以下代码中使用https://www.twitch.tv/directory/game/GameNameHere(在TamperMonkey脚本中),但事件并未触发。

window.onpopstate

修改:经过进一步调查,似乎对于TamperMonkey,我必须使用$(document).ready(function() { console.log("Running"); // works window.onpopstate = function(e) { console.log("onpopstate triggered"); }; }); 代替unsafeWindow才能让window生效。但是,onpopstate仅适用于浏览器返回或转发的情况。其他案例请参考接受的答案。

1 个答案:

答案 0 :(得分:1)

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

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