URL更改时是否会触发事件

Don*_*n P 5 javascript google-chrome

是否有一个事件在URL的任何部分发生变化时触发?

多次询问URL更改,但一般答案已过时(~2010).

现有答案摘要:

  • 您可以popstate在某些情况下使用(它会触发所有URL更改).

  • 您可以onbeforeunload在导航页面时使用(并卸载其资源).

  • 您可以使用该hashchange事件来监视散列片段更改.

  • 否则似乎传统的答案仍然是轮询 window.location的更改.

投票仍然是2016年的最佳解决方案吗?令人惊讶的是,鉴于其中的其他进展location及其API,没有事件发生,所以这就是我发布这个问题的原因.

Muh*_*red 1

使用history.pushState()时的事件应该足以对href更改采取操作:

window.addEventListener('popstate', listener);

const pushUrl = (href) => {
  history.pushState({}, '', href);
  window.dispatchEvent(new Event('popstate'));
};
Run Code Online (Sandbox Code Playgroud)