2010-11-17 60 views
5

我想在一個AJAX應用程序中實現一個體面的導航。我現在正在做的是:聰明的方式來管理瀏覽器歷史

  • 每當用戶點擊一個AJAX鏈接,相應的調用被執行並且哈希被改變。
  • 無論何時加載新頁面,我都會檢查哈希是否存在,並進行相應的AJAX調用來更新頁面。這可確保書籤按預期工作。
  • 每500ms我會檢查哈希值是否發生變化並執行相應的AJAX調用。這會照顧用戶按下後退/前進按鈕,儘管延遲很小。

第三點有點煩人:我寧願沒有每500ms只有一次超時檢查哈希,因爲大部分時間都會保持不變。

有沒有更好的方法來管理呢?我想不出任何替代品,但也許我錯過了一些東西。

請不要將我指向現成的解決方案,除非您知道它們基於不同的機制。

回答

5

有一個「hashchange」事件,它將在HTML5中實現。我不確定現在有多好的支持...... IE8支持它,我認爲Mozilla在最近的版本中有自己的實現。除此之外,我不害怕。檢查exery x ms是每個人都這樣做的方式。

+1

IE8,Firefox 3.6,Chrome 4和更新的瀏覽器支持hashchange事件。 Google's Closure Library(http://closure-library.googlecode.com/svn-history/r8/trunk/closure/goog/docs/class_goog_History.html)和YUI 3(http://developer.yahoo.com/yui/ 3/history /)將盡可能使用此事件,否則將退回到投票計劃。 – ide 2010-11-17 11:57:05

0

也許this是一個有趣的閱讀,它是一個現成的解決方案,你正在做的確切的事情。 也沒有,直到hashchange在每一個瀏覽器適當的支持(閱讀:IE),你必須檢查手動

0

使用這個插件:http://www.asual.com/jquery/address/

jQuery的地址插件提供了強大的深層鏈接功能,並允許創建可指向網站部分或應用程序狀態的唯一虛擬地址。它使許多包括重要的功能:

  • 在瀏覽器書籤或社交網站
  • 發送通過電子郵件或即時信使
  • 鏈接查找使用各大搜索引擎
  • 利用瀏覽器歷史記錄具體內容和重新加載按鈕
+0

我已明確指出「請不要將我指向現成的解決方案,除非您知道它們基於不同的機制。」 – Andrea 2010-11-18 10:16:20

+2

對不起,意大利語是我的第一語言。據我所知,看起來你正在尋找不同的機制。我認爲它應該是「請不要將我指向現成的解決方案,除非你知道它們不是基於不同的機制」。我其實覺得我忽略了這句話。 – 2010-11-19 20:36:33

+0

在那裏,我投票決定抵消他的粗魯行爲。 :) – 2012-10-04 17:48:12