開發保留標準瀏覽器功能的AJAX應用程式(4)

來源:互聯網
上載者:User
ajax|標準|程式|瀏覽器 案例分析:包含後退按鈕和深連結的Ajax論壇

  Backbase Ajax引擎是一個成熟的、功能豐富的Ajax軟體包。對所有傳統Web可用功能的支援是Backbase的優點之一。

  Backbase DevNet包含了為開發人員提供的、與Backbase和Ajax有關的資訊。而開發人員論壇是DevNet的一部分。

  Backbase Web應用程式(包括DevNet及其討論論壇)是使用Backbase構建的。為了示範該論壇功能豐富和易於到達的特點,我們將逐步遍曆論壇的典型用例:
  • 開發人員瀏覽論壇,閱讀不同的主題。
  • 開發人員複製這個主題的URI,將其粘貼到電子郵件中並發送給朋友。這個朋友從電子郵件中複製這個URI到一個瀏覽器中並開啟同一論壇主題。
  • 開發人員單擊後退按鈕以閱讀以前的主題。
  進行幾次使用者互動後的論壇介面狀態

  我們來看看開發人員來到“BXML”論壇並選中名為“Issue with vertical and horizontal menus”的貼子之後,論壇介面的狀態以及地址欄中的對應URI是什麼樣的情況。

  論壇和貼子被選中,並被高亮顯示。討論的主題被顯示出來以供閱讀。在URI的片段標識符中包含了所有的相關資訊。在#後面,我們看到了為書籤和深連結而記錄的完整狀態:“forum”表示開發人員在瀏覽這個Web網站的論壇部分;“forum=2”表示當前選中的是BXML論壇,“thread=211”記錄了當前所選擇的主題。最後,方括弧中的“[5]”表示與書籤結合的對多個後退和前進步驟的處理。


圖3.具有Ajax URI的論壇初始狀態 (單擊圖片查看大圖)

  訪問Backbase論壇,您就可以看到URI如何隨著每次狀態改變而更新,即使更新是在用戶端進行處理的,或者牽涉到通過XMLHttpRequest對象進行部分頁面更新。

  在新的瀏覽器視窗內重新建立論壇介面的狀態

  現在讓我們看看當開發人員將當前URI發送給朋友時會發生什麼情況。這個朋友在瀏覽器視窗中開啟了這個URI,期望能看到相同的介面狀態。需要在新的瀏覽器中重新建立該狀態。對於本文,我是從一個Firefox視窗中複製URI到一個新開啟的IE視窗中。

  在地址欄中輸入URI首先會產生一個伺服器端的請求。使用“#”前的部分,會載入Backbase.com,在這一過程中,Backbase Ajax引擎也就實現了初始化。活動的Backbase引擎會閱讀URI中“#”後的部分。通過這些資訊,Backbase引擎會轉到“論壇(forum)”部分,並選定BXML論壇(id=2)中的第211個主題,從而建立相應的狀態。不需要頁面的重新整理,只需從伺服器中載入附加的內容並在用戶端部分地更新介面,就可以實現了。

  在後續的瀏覽器功能的處理中,新的URI被添加到瀏覽器記錄中,這個新的URI既可以在地址欄中使用,也可以用來做深連結。“[0]”表示沒有可返回(使用後退按鈕)的先前狀態。


圖4.在新的瀏覽器視窗中重新建立論壇狀態(單擊圖片查看大圖)

  使用者單擊後退按鈕後的論壇介面狀態


  第一步我們研究了URI如何隨著由使用者互動所觸發的介面狀態更改而更新。下面我們將看到相反的情況:使用者請求新的URI,相應的狀態被重新建立。

  通過單擊後退按鈕,使用者要求返回先前閱讀的頁面。瀏覽器通過從記錄堆棧中找回先前的URI來響應後退按鈕。Backbase Ajax引擎將監測這一變化,從記錄中讀取新的URI,並來到“論壇”部分選定BXML論壇(id=2)中的第192個主題,從而重新構建相應的狀態。新的URI將按照上述語義顯示在地址欄中。

  到這裡,我們的案例分析也就結束了。


圖5.單擊後退按鈕後的論壇狀態(單擊圖片查看大圖)

  Ajax程式確實需要後退按鈕!


  在過去的幾年中,Web開發人員因為市場要求“易於到達”並願意接受“功能豐富”方面的犧牲,所以選擇構建Web介面。然而,當前Ajax受到的普遍關注清楚地顯示出這種情況實際上只是暫時的。市場現在強烈要求Web程式也能像傳統型應用程式那樣具有豐富的功能、互動性以及敏捷的響應能力。

  但是,終端使用者已經習慣了Web互動方式。使用常見模式與任何Web介面進行互動可以提高生產力。終端使用者期望後退/前進按鈕和重新整理按鈕能正常工作,可以建立書籤和深連結,可以查看源檔案,使用“尋找”對頁面進行搜尋,而且搜尋引擎可以對Ajax應用程式建立索引。

  Ajax社區必須知道:正如本文所述,在Ajax應用程式中提供對後退/前進按鈕以及其它傳統瀏覽器功能的支援的技術是存在的。雖然實現起來並不容易,而且會增加成本,但是Ajax社區的成功需要將傳統的瀏覽器功能構建到Ajax應用程式中。因此,我強烈呼籲Ajax開發人員構建支援這些功能的Ajax應用程式!

  結束語


  在本文中,我著重闡明了Ajax應用程式為什麼需要遵從傳統的Web互動方式並提供傳統的Web可用功能。我確定可以通過建立在片段標識符中包含用戶端狀態資訊的“Ajax URI” ,從而將這些功能編程到Ajax應用程式中。

  閱讀相關代碼,您會發現,由於狀態處理代碼通常非常重要,再加上不同瀏覽器之間常常不相容,實現完整的通用解決方案是相當困難的。而Backbase Ajax引擎通過開箱即用地提供所需功能,為該問題提供了一種解決方案。
  • Ajax: 一個建立Web應用的新途徑
  • Ajax的錯誤處理機制探討(2)
  • Ajax的錯誤處理機制探討(1)
  • 初次體驗.NET Ajax無重新整理技術
  • Rails系統中的AJAX開發技術簡析(4)


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.