URL更改时是否会触发事件

时间:2016-07-29 21:26:14

标签: javascript google-chrome

当网址的任何部分发生变化时,是否会触发某个事件?

多次询问网址更改,但一般答案已过时(〜2010年)。

现有答案摘要:

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

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

  • 您可以使用hashchange事件来监视哈希片段更改。

  • 否则似乎传统的答案仍然是民意调查以更改window.location。

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

1 个答案:

答案 0 :(得分:0)

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

window.addEventListener('popstate', listener);

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