修補AJAX應用中Back/Forward Button和Bookmark失效的問題

來源:互聯網
上載者:User

想法與目標

從AJAX誕生至今,就存在著Back/Forward Button和bookmark失效的問題,我 以前一般提倡,一個好的AJAX應用應該不讓使用者有點擊“Back/Forward”的想法 ,並且使用某種方式提供給使用者一個能夠記錄直接產生頁面的Bookmark。 Windows Live Local應該是這種應用最好的典範之一,其靈活的互動,良好的界 面讓我在初遇時不得不眼前一亮。

另外,我也曾經見過把後退按鈕禁用的做法(其實這樣對於解決問題的確不 錯),不過這些都似乎只是一個workaround,設法避開這個AJAX應用普遍存在的 問題。似乎Gmail能夠支援Back按鈕,但是我驚奇的發現,在點擊Back後,卻不 能使用Forward,所以這還不算成功的解決這個問題。那麼能否解決?似乎已經 有了一定的實現。

事實上,之所以我會產生實現自己的解決方案的想法,是因為從Nikhil Kothari的Blog上看到了他的解決方案(點擊這裡查看)。他實現了一個 HistoryControl控制項,可以在頁面中配合UpdatePanel使用,在一定程度上實現 了對Back/Forword Button已經Bookmark的支援。但是正如他在Blog上所說的, 這隻是他的一個prototype。我在使用了他的示範之後,也的確發現了一些問題 (示範也能從Nikhil的Blog上下載):

HistoryControl是一個Server控制項,必須配合UpdatePanel使用,並沒有對於 Atlas的用戶端應用甚至普通的AJAX應用提供基本的支援。

不支援FireFox(不知為何,我在自己嘗試之後覺得支援FireFox比IE容易實 現)。

在IE裡使用時,從Back和Forward的下拉框裡可以看出,那些Title都成為了 “Empty Page”。

不支援在Back和Forward下拉框中選擇一項History跳轉。

如果訪問了別的網站再Back,則在IE下不支援多次回退。

部署麻煩。事實上我覺得很奇怪,我除了直接在他的項目中成功運行之外。 部署到別的項目或者是我的空間都有問題,怎麼也找不出原因,估計是檔案路徑 問題,需要仔細讀一下他的代碼。

總之,這個解決方案還很不成熟,但是我們要對Nikhil,Atlas和微軟有信心 ,對於Back/Forward的內建支援應該會出現在Atlas的後續版本中。

於是我想,不如我來實現一個自己的吧,雖然我一直提倡軟體複用,但是如 果找不到成熟的解決方案,那麼就該發揮程式員的主觀能動性了。對於我最後的 實現,它有以下特點:

一個輕量級的JS解決方案。雖然我是在Atlas的基礎上寫的,但是只是使用了 Atlas中的Sys.Timer類,很容易修改成獨立於任何庫的JS代碼。 

支援IE和FireFox。

簡單的支援Back和Forward的下拉框裡的Title文字,在大多數情況下不會出 錯。產生Nikhil的這個問題的原因在闡述我的實現時會提及。我簡單地解決了這 個問題,但是沒有設計出完整支援title問題的完美實現。我有一些想法,似乎 十分複雜,在嘗試時都宣告失敗。

支援在Back和Forword下拉框中選擇一項History跳轉。

支援Bookmark,使用者可以輕鬆將頁面加入收藏夾。 

便於使用,部署簡單。

對於我列出Nikhil的實現裡的第5個問題,我想了一些辦法,卻依舊沒有解決 。現在雖然腦子裡有想法,但還需要繼續嘗試。

相關文章

聯繫我們

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