2014-02-23 68 views
0

我正在建立自己的個人網站,並隨時隨地教導自己新的代碼 - 我嘗試過的最近的事情之一是jquery(和一些ajax)在不重新加載頁面的情況下調用新內容,以便手風琴菜單不會重新加載。經過一些試驗和錯誤,並從StackOverflow幫助我有以下幾點:我可以添加一個回到我的jQuery的功能?

function reloadMiddleWith(theme, page, content) { 
    var new_url = "http://www.myurl.com/dev/" + page + ".php#" + content; 
    $('#live-area').addClass(theme); 
    $('#area-loader').load(new_url); 
} 

這是完美的!這做了我所要求的一切,但有一個疏忽我沒有考慮:我不能使用我的BACK按鈕。在當前的表單中,單擊BACK並不會將我帶入我以前的內容,但是當我打開瀏覽器時,我會一直回到瀏覽器的「啓動」頁面。順便說一下,上面的代碼是爲我所用的原Ajax代碼的替代品......

function reloadMiddleWith(theme, page, content) { 
    var new_url = "http://www.myurl.com/dev/" + page + ".php#" + content; 
    $(‘#live-area’).addClass(theme); 
    $.ajax({ 
     url: new_url, 
     dataType: 'html' 
}) 
    .done(function(data) { 
     // Assuming the request returns HTML, replace content 
     $('#area-loader').html(data); 
}); 

我的問題是什麼,我需要做的添加到回擊的能力嗎?第二個AJAX腳本能夠做到這一點嗎?這是一個小增加,還是我需要完全重寫該函數?

謝謝!

+0

可能是這可以幫助你http://stackoverflow.com/questions/17769884/ajax-and-back-button-hash-changes-but-where-is-previous-page-state-stored – Lab

+3

有時候我想要也起訴我的BACK按鈕。 –

+0

檢查此問題http://stackoverflow.com/questions/17594413/js-or-jquery-browser-back-button-click-detector –

回答

1

因爲您的瀏覽器不重新加載(因爲ajax),因此沒有歷史記錄被保留,因此您不能使用後退按鈕。如果你願意,你可以在你的網站上創建一個後退按鈕(不是瀏覽器後退按鈕),然後自己跟蹤歷史記錄。

或搜索「html5 pushstate」以查找替代方法。

或者使你的應用程序監聽hashtags,並相應地加載特定視圖..主題標記可能是這個樣子http://mywebsite.com/#/somepage所以每當您的網頁加載它#號後,請檢查URL,然後負載(通過AJAX)正確視圖。

或者,也許嘗試像BackboneAngular

一個框架,你也可能會發現this問題有意思。

相關問題