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

时间:2016-03-22 14:32:03

标签: javascript javascript-events

我正试图通过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

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

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

1 个答案:

答案 0 :(得分:3)

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