2011-05-13 24 views
2

我在Chrome(和Safari)中遇到了一些哈希問題。我使用散列來存儲搜索字符串並將其更新爲輸入。所以,我只加1分進入到每次搜索歷史,我更換,因爲它的真實鍵入當前歷史記錄條目。*停止Chrome自動完成網址哈希?

location.replace(location.href.slice(0, -location.href.split("#!")[1].length - 2) + searchHash); 

doesn't seem to work in Webkit,但我還是設法解決它與

history.back(1); 
setTimeout(function() { location.hash = searchHash; }, 50); 

不幸的是,Chrome會根據我的瀏覽記錄經常更改網址。所以,如果我搜索過以前青蛙/#!search/frog),現在開始尋找搜身/#!search/frisking),Chrome會自動完成有益向/#!search/fr/#!search/frog。大多數情況下,對於想要鏈接到特定搜索的用戶來說,這只是令人困惑,但有時候,Chrome會在確定搜索字詞看起來像其他頁面的散列時,啓動了網站的單獨部分。

Chrome自動填充的東西,我鍵入通常是非常有用的,但我只是看不到由JavaScript輸入的自動完成網址的價值。有沒有辦法預防這種情況?我在這裏做錯了什麼?

*我無法使用location.hash作爲Fx decodes it

更新:如果我刪除history.back(1),Chrome不再自動完成散列(J. Steen's answer)。

回答

2

我見過這種技術的幾個網站實施,使用延遲輸入,以便該位置只在用戶停止鍵入500毫秒後更新。這樣,只有一個歷史記錄條目。與此同時,頁面和搜索結果在用戶通過例如打字鍵盤輸入時立即更新。阿賈克斯。

http://www.prisjakt.nu是一個瑞典的網站,利用這種策略。

+0

感謝您的想法。當然,如果有人打字速度慢,它就不起作用,但它可能足夠好。有趣的是,我發現(在嘗試建議的網站之後),如果我刪除history.back(1),那麼Chrome不會自動填充URL,這對我來說似乎是一個錯誤。 – meloncholy 2011-05-13 16:57:17

+0

奇怪。但有一點要記住。 =) – 2011-05-20 09:14:54

+0

我在辦公室呆了幾天,但現在我已經完成了這個任務,直到Chrome(希望)得到修復後,確實看起來確實夠好。 :) 再次感謝! – meloncholy 2011-05-24 15:15:00