Javascript 在Chrome上检测此事件:更改URL更改而不重新加载

Javascript 在Chrome上检测此事件:更改URL更改而不重新加载,javascript,jquery,html,google-chrome,Javascript,Jquery,Html,Google Chrome,我有一个网站,在Chrome上使用以下命令更改URL而无需重新加载: window.history.pushState(“object or string”, “Title”, “/new-url”); 有没有办法从Javascript中检测这样的事件? 我试过这个,但不起作用: $(window).bind('hashchange', function() { alert("CHANGED!!"); }); 仅适用于Chrome扩展 鉴于: var stateObj = { f

我有一个网站,在Chrome上使用以下命令更改URL而无需重新加载:

window.history.pushState(“object or string”, “Title”, “/new-url”);
有没有办法从Javascript中检测这样的事件? 我试过这个,但不起作用:

$(window).bind('hashchange', function() {
    alert("CHANGED!!");
});  

仅适用于Chrome扩展

鉴于:

var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "yourwebsite.com/page2");
您可以通过以下方式检测它:

chrome.webNavigation.onHistoryStateUpdated.addListener(function(e) {
        console.log(e);
      }, {url: [{hostEquals: 'yourwebsite.com'});

仅适用于Chrome扩展

鉴于:

var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "yourwebsite.com/page2");
您可以通过以下方式检测它:

chrome.webNavigation.onHistoryStateUpdated.addListener(function(e) {
        console.log(e);
      }, {url: [{hostEquals: 'yourwebsite.com'});

你为什么不触发你自己的定制活动呢?这个网站不是我的,是松弛的。我只是在写一个Chrome扩展…我的意思是,如果是你自己的代码调用了
pushState
,那么就在那之后,触发任何自定义事件(例如popstate事件),很遗憾,这不是我自己的代码。我的Chrome扩展需要检测URL更改。即使需要计时器和循环,也可以这样做吗?您只需重新定义
history.pushState
函数,添加自定义事件逻辑,然后
应用
原始函数即可。请参阅以下答案:。你只需要使用内容脚本在加载时将其注入页面。为什么不触发你自己的自定义事件呢?该网站不是我的,是SLACK。我只是在写一个Chrome扩展…我的意思是,如果是你自己的代码调用了
pushState
,那么就在那之后,触发任何自定义事件(例如popstate事件),很遗憾,这不是我自己的代码。我的Chrome扩展需要检测URL更改。即使需要计时器和循环,也可以这样做吗?您只需重新定义
history.pushState
函数,添加自定义事件逻辑,然后
应用
原始函数即可。请参阅以下答案:。您只需要在加载时使用内容脚本将其注入页面。