AJAX:如何處理書籤和後退按鈕

來源:互聯網
上載者:User

本文將展示一個開源JavaScript庫,該指令碼庫給AJAX應用程式帶來了書籤和後退按鈕支援。在學習完這個教程後,開發人員將能夠獲得對一個AJAX問題的解決方案(甚至連Google Maps和Gmail現在都不提供該解決方案):一個強大的、可用的書籤和後退前進功能,其操作行為如同其他的Web應用程式一樣。

本文將闡述目前AJAX應用程式在使用書籤和後退按鈕方面所面臨的嚴重問題;展示Really Simple History(RSH)庫——一個可以解決以上問題的開源架構,並提供幾個運行中的例子。

本文所展示的這個架構的主要發明分為兩部分。首先是一個隱藏的HTML表單,用於緩衝大量短期會話的用戶端資訊;這種緩衝功能為頁面導航提供了強大的支援。其次是超連結錨點和隱藏Iframe的組合,它們被嵌入後退和前進按鈕,用來截獲和記錄瀏覽器的記錄事件。以上兩種技術都被封裝在一個簡單的JavaScript庫中來簡化開發。

問題

書籤和後退按鈕在傳統的多頁面Web應用程式中運行得非常好。當使用者瀏覽web網站的時候,其瀏覽器的地址欄記錄隨新的URL而更新,這些記錄可以被粘貼到電子郵件或者書籤中供以後使用。後退和前進按鈕也可以正常操作,使使用者可以在訪問過的頁面中向前或向後翻動。

但是AJAX應用程式卻不一樣,它們是運行在單個Web頁面中的複雜程式。瀏覽器並不是為這類程式而構建的——這類Web應用程式已經過時,它們在每次滑鼠點擊的時候都需要重新重新整理整個頁面。

在這種類似於Gmail的AJAX軟體中,瀏覽器的地址欄在使用者選擇功能和改變程式狀態的時候保持不變,這使得無法在特定的應用程式視圖中使用書籤。此外,如果使用者按下“後退”按鈕來“撤銷”上次的操作,他們會驚奇地發現,瀏覽器會完全離開該應用程式的Web頁面。

解決方案

開源RSH架構可以解決這些問題,它為AJAX應用程式提供了書籤和控制後退、前進按鈕的功能。RSH目前還處於Beta階段,可以在Firefox 1.0、Netscape 7+、Internet Explorer 6+等瀏覽器上運行;目前還不支援Safari(有關說明,請參見我的文章“Coding in Paradise: Safari: No DHTML History Possible”)。

目前有幾個AJAX架構對書籤和記錄問題有所協助;但這些架構目前都有幾個由於實現而造成的重大Bug(有關詳細資料,請參見“Coding in Paradise: AJAX History Libraries”)。此外,很多AJAX記錄架構被綁定到較大的庫上,例如Backbase和Dojo;這些架構為AJAX應用程式引入了完全不同的編程模型,迫使開發人員使用全新的方式來獲得記錄功能。

相較之下,RSH是一個可以包含在現有AJAX系統中的簡單模組。此外,RSH庫採用了一些技術以避免產生影響其他記錄架構的Bug。

RSH架構由兩個JavaScript類組成:DhtmlHistory和HistoryStorage。

DhtmlHistory類為AJAX應用程式提供記錄抽象。AJAX頁面使用add()方法添加記錄事件到瀏覽器,指定新的地址和相關的記錄資料。DhtmlHistory類使用一個錨散列(如#new-location)更新瀏覽器當前的URL,同時把記錄資料和該新URL關聯。AJAX應用程式將自己註冊為記錄的監聽器,當使用者使用後退和前進按鈕進行瀏覽時,記錄事件被觸發,為瀏覽器提供新的位置以及與add()調用一起儲存的任何記錄資料。

第二個類:HistoryStorage,允許開發人員儲存任意數量的已存記錄資料。在普通Web頁面中,當使用者導航到一個新的web網站時,瀏覽器卸載並清除web頁面上的所有應用程式和JavaScript狀態;如果使用者用後退按鈕返回,所有的資料都丟失了。HistoryStorage類通過一個包含簡單散列表方法(例如put()、get()、hasKey())的API來解決這類問題。上面的方法允許開發人員在使用者離開Web頁面之後儲存任意數量的資料;當使用者按後退按鈕重新返回時,記錄資料可以通過HistoryStorage類來訪問。在內部,我們通過使用隱藏的表單欄位來實現此功能,這是因為瀏覽器會自動儲存表單欄位中的值,甚至在使用者離開Web頁面的時候也如此。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.