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

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

我正在尝试通过 www.google.com 在每次搜索时执行我的 JavaScript 代码。当我搜索时"Whosebug" location.href 这个词看起来像:

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

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

然后我在 Web Console 中写:

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

然后如果我输入例如"banana" 在搜索字段中并点击 "Enter" location.href 将是:

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

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

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

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