繁体   English   中英

为什么hashchange事件不会在www.google.com上触发?

[英]Why hashchange event doesn't fire on www.google.com?

我正试图通过www.google.com在每次搜索时执行我的JavaScript代码。 当我搜索例如“stackoverflow”这个词时, location.href看起来像:

https://www.google.com/#q=stackoverflow

所以location.search === ""location.hash === "#q=stackoverflow"

然后我在Web控制台中写道:

window.addEventListener("hashchange", function () {
    console.log("hash changed");
}, false);

然后,如果我在搜索字段中键入例如“banana”并点击“Enter”,则location.href将为:

https://www.google.com/#q=banana

但是“hashchange”事件不会在最新的Chrome和Firefox中发布。 我在Web控制台中什么都看不到。 但如果我将位置栏中的网址手动更改为https://www.google.com/#q=orange ,或者我通过location.href = "https://www.google.com/#q=milk"更改网址,则会触发location.href = "https://www.google.com/#q=milk" 为什么?

ps当您在搜索字段中点击“Enter”时,www.google.com不会重新加载。 实际上我是为浏览器插件而做的,仅为了简单起见而提到了Web控制台。

谷歌改为使用history.pushState,它不会触发onhashchange事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM