簡體   English   中英

用戶單擊同一鏈接時,Hashchange不觸發

[英]Hashchange not firing when user clicks on same link

我正在創建一個HTML和Javascript客戶端,以便在與REST API對話的瀏覽器中運行。 我正在使用RouteMap設置我的URL。 所以我一直保持這樣的約定

http://mysite.com/#/{ResourceName}/[edit|view|list]/[Id]/

我只設置了一條路由,並且在綁定到hashchange的函數中獲取了這些參數。 大多數事情都很好。 僅有兩個問題,我因此而陷入困境。

  1. 如果用戶單擊同一鏈接兩次,則不會觸發hashchange事件。 是的,哈希值沒有改變,因此顯然不會觸發。 但是應該可以做些什么,我很想念。
  2. 如果我在UI中更改了一些不想更改哈希鏈接的內容(例如調出新的div並隱藏了一些內容),那么我會丟失該歷史記錄,並且無法通過正確單擊后退按鈕來返回。

任何幫助將不勝感激。

對於#1,您可能希望將處理程序附加到鏈接單擊事件。 這樣,您可以知道是否單擊了鏈接。 使用onhashchange時,我總是在click事件上附加一些內容,以幫助polyfills進行onhashchange,因此至少我可以知道它何時失敗。

對於#2,我想指出的是,自動更改內容會影響用戶的歷史記錄。 您可以用無意義的哈希變化填充某人的歷史記錄。 我建議僅在用戶實際交互時更改歷史記錄。 簡而言之,HTML5確實提供了pushStatepopState 參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM