为什么 hashchange 事件不会在 www.google.com 上触发?
Why hashchange event doesn't fire on www.google.com?
我正在尝试通过 www.google.com 在每次搜索时执行我的 JavaScript 代码。当我搜索时"Whosebug" location.href
这个词看起来像:
所以 location.search === ""
和 location.hash === "#q=Whosebug"
。
然后我在 Web Console 中写:
window.addEventListener("hashchange", function () {
console.log("hash changed");
}, false);
然后如果我输入例如"banana" 在搜索字段中并点击 "Enter" location.href
将是:
但是 "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 事件。
我正在尝试通过 www.google.com 在每次搜索时执行我的 JavaScript 代码。当我搜索时"Whosebug" location.href
这个词看起来像:
所以 location.search === ""
和 location.hash === "#q=Whosebug"
。
然后我在 Web Console 中写:
window.addEventListener("hashchange", function () {
console.log("hash changed");
}, false);
然后如果我输入例如"banana" 在搜索字段中并点击 "Enter" location.href
将是:
但是 "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 事件。