2016-03-22 54 views
1

我試圖通過www.google.com在每次搜索中執行我的JavaScript代碼。當我搜索例如單詞 「計算器」 location.href樣子:爲什麼hashchange事件不會在www.google.com上觸發?

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

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

然後我寫在Web控制檯:

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

然後,如果我輸入例如「香蕉」,在搜索領域,並點擊「進入」的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"更改了網址,它會觸發。爲什麼?

p.s.當您在搜索字段中按「Enter」時,www.google.com不會重新加載。其實我只是爲了一個瀏覽器插件而做的,並且只是爲了簡單而提到了Web控制檯。

+0

您是否嘗試過使用不是Google的測試頁? –

+0

@AtesGoral是的。如果在我的測試網頁上點擊「something」,hashchange事件就會觸發。 – traxium

+1

但是,這是谷歌。你正在創建一個新的請求的表單字段中輸入。此時頁面將重新加載。除非你攔截表單提交事件,否則它會去,改變頁面,並且不會觸發任何哈希變化事件。 –

回答

2

Google更改爲使用history.pushState,它不會觸發onhashchange事件觸發。

相關問題