2015-10-26 31 views

回答

1

與散列發生的不同之處在於,如果由於用戶的操作而導致搜索值發生更改,您的頁面將重新加載。因此,你的選擇是使用onbeforeunload事件:

<body onbeforeunload="return myFunction()"> 

http://www.w3schools.com/tags/ev_onbeforeunload.asp

1

hashsearch標籤都具有不同的實現。當搜索字符串發生變化時,整個頁面被重新加載,但在hash的情況下沒有。因此,如果您想對href更改進行一些處理,則可以使用onbeforeunload事件處理程序。

你可以使用beforeunload事件來觸發你的代碼在導航之前運行......如果你需要更具體的東西(例如,只有在你的代碼中啓動的導航),那麼我建議你分解代碼更改窗口。定位到一個單獨的函數中,併爲您的定製邏輯添加一個鉤子。

爲了更好地理解,你可能想看看Ben Nadel的post關於這樣做,它可能正是你要找的。

1

這已在On - window.location.hash - change?中提出。簡而言之,在JavaScript中沒有完全乾淨的方式來做到這一點;你需要不時地檢查位置。一些框架和庫會爲你提供一個很好的抽象層,但在內部,他們只是繼續輪詢位置。

不幸的是,盧卡斯的回答不正確 - 您可以使用JavaScript歷史記錄API來修改當前的URL而無需重新加載頁面。

+0

@dmitrymar不會嘗試更改URL而不重新加載。相反,他試圖檢測由於用戶的行爲而導致的更改,在這種情況下,History API將毫無用處。 –