我正在創建一個單頁並使用pushState更改地址。現在,如果我推回來,popstate會被觸發,並且想要將頁面從當前位置滾動到最後位置。這當然有效,但頁面跳轉到頂部。popstate - 需要點擊兩次後退按鈕才能返回
有誰知道如何防止這種行爲?我使用jQuery動畫滾動....
謝謝:)
//編輯:好,我發現,如果我動畫滾動,然後更改URL,也不會跳來跳去 - 但現在我不得不按兩次後退按鈕找回...
http://www.testwebseiten.at/user/falk/stein-jagersbacher.at
的代碼是有點亂,所以我解釋這一點:
var scrollCurrentSection = function(event) {
if (typeof event.preventDefault != 'undefined')
event.preventDefault();
var page = "";
if (window.location.href.substr(-1) == '/')
page = sjag.index;
else
page = window.location.href.match(/([^\/]+)$/)[1];
$this = $('a[href$="'+page+'"]');
if ($this.length) {
sjag.scrollToSection($this);
}
}
window.onpopstate = scrollCurrentSection;
sjag包含幾個選項和方法...所以sjag.index
只包含'index.php',sjag.scrollToSection
包含動畫。
在點擊導航的鏈接,下面的函數被調用:
// set navi
$("#navi a, #navi-add a").click(function(event) {
var data = $(this).data('sjagpage');
if (typeof data == 'undefined')
return;
event.preventDefault();
// animate scrolling
$this = $(this);
sjag.scrollToSection($(this), function() {
history.pushState("", "", $this.attr('href'));
});
});
$(this).data('sjagpage')
包含了jQuery的元素。
當我沒有設置動畫滾動時,只需要一次點擊就可以返回 - 但是當我現在爲它設置動畫時,它需要兩個...爲什麼?
我們需要的代碼。你可以發佈嗎? – 2012-03-09 13:13:11
@Deepak:我沒有 - 我希望你現在瞭解一點:) – lumio 2012-03-09 13:38:58