2016-07-29 117 views
4

当URL的任何部分发生更改时是否会触发事件?URL更改时是否触发事件

检测到URL的变化已被问了很多次,但一般的答案已过时(〜2010)。

现有的答案摘要:

  • 您可以使用popstate对于某些情况(它确实火为URL的变化)。

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

  • 您可以使用hashchange事件来观察散列碎片更改。

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

轮询还在最好的解决办法?令人惊讶的是,鉴于location及其API中的其他进步,没有发生此事件,所以这就是我发布此问题的原因。

+0

不,对于每一个变化不常见的事件,但你可以根据其他事件创建一个。 – adeneo

+0

@adeneo - 你指的是哪些事件?目前,我正在尝试检测您在视频之间导航时在YouTube上发生的网址更改。 –

+0

我认为使用popstate是最好的解决方案,也是很好的支持。有什么具体的要求,为什么你不想使用它? – Wolfgang

回答

1

事件中使用history.pushState()时,应该足以承担HREF变化采取行动:

window.addEventListener('popstate', listener); 

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