2011-04-26 81 views
1

我的應用程序有好幾頁。在某些頁面上,我在其他頁面上給出了一個後退按鈕,但沒有給出(客戶端的要求)。現在在一個特定的頁面上,我有一個選擇列表(選擇是使用jQuery插件的圖像幻燈片),供用戶選擇。選擇選項會將用戶轉到下一頁。現在我想要獲得與點擊瀏覽器後退按鈕時突出顯示的選擇相同的頁面。在點擊瀏覽器後退按鈕時,我猜這個頁面正在重新加載,丟失了cookie值,即當我從圖像集中選擇一個圖像時,它會將我帶到另一個頁面。在點擊瀏覽器後退按鈕時,我想要從該組中選擇相同的圖像來獲取該頁面。是否有任何解決方法,以便我還可以在瀏覽器上獲取選定的值。在點擊瀏覽器後退按鈕時獲取用戶選擇

回答

4

另一個插件做到這一點:

jQuery的燒烤利用了HTML5 hashchange事件,讓簡單,但功能強大的可收藏#hash歷史。此外,jQuery BBQ提供了完整的.deparam()方法,以及散列狀態管理和片段/查詢字符串分析和合並實用程序方法。

http://benalman.com/projects/jquery-bbq-plugin/

+1

令人印象深刻的圖書館 – jantimon 2011-04-26 12:17:56

1

你可以利用onunload事件,幾乎所有的主流瀏覽器*會火,使用後退/前進/刷新按鈕時。讓onunload事件處理程序同步發送一個AJAX請求,包含要恢復當前頁面狀態所需的所有值,PHP腳本:

$(window).unload(function() { 

    // Insert your code here to collect all values 
    // necessary to save a restorable state of the 
    // current page. 
    // 
    // var pageState = { 
    //  page: host.pathname, 
    //  : 
    // }; 

    $.ajax({ 
     type: "POST", 
     async: false, 
     url: "http://mydomain.com/mysave.php", 
     data: jQuery.param(pageState), 
     error: function(jqXHR, textStatus, errorThrown){ 
      // your code 
     } 
     success: function(data, textStatus, jqXHR){ 
      // your code 
     } 
    }); 

}); 

讓PHP腳本保存接收到的頁面狀態的地方(例如會議,數據庫等等),所以它是可用的,當你要生成一個頁面時,你想要恢復到以前的狀態。

請注意,此解決方案有一個可能的缺點。

同步請求用於給服務器一個真正的機會來完全接收和處理請求。一個異步請求會立即返回,因此已經加載新頁面,並且可能在取消並行運行的異步請求之前,它已經完成(甚至發送)。

Otoh同步請求阻塞(凍結瀏覽器,用戶不能做任何事情),直到服務器響應。如果你的服務器沒有響應,這會導致死鎖。不幸的是,無法在客戶端取消同步請求(至少我沒有意識到),所以您應該始終儘可能縮短同步請求的時間(服務器端處理時間)。爲了確保你擁有一臺快速可靠的服務器,但是你總是應該擁有這個服務器^^。


* 要知道,雖然,一些瀏覽器(例如Opera)的做onunload事件,當使用特定的瀏覽器按鈕。

相關問題