2013-03-18 123 views
3

我正在使用JS,JQuery,& PHP和試圖做的是解決無限滾動問題。問題是,如果您在頁面上長時間滾動並使用ajax加載更多頁面,請單擊鏈接轉到新頁面,如何在使用瀏覽器時自動轉到舊頁面中的相同位置新頁面上的後退按鈕?訪問另一頁後保留瀏覽器滾動位置

。使用ajax在滾動中加載新頁面。

+3

我希望Facebook能夠實現這一點。 – awendt 2013-03-18 20:25:47

+1

每當你的ajax得到新的東西,你必須保存當前加載狀態的會話。那麼當用戶訪問其他站點並返回到前一個站點時,您只需加載以前的狀態並滾動到它。 – ITroubs 2013-03-18 20:30:24

+0

@ITroubs有趣。因此,通過這種實施方式,您是否看到任何缺點?如果頁面有10,000-15,000行html,該怎麼辦? – stwhite 2013-03-18 20:34:04

回答

0

我對我的問題提出的解決方案是在導航離開頁面之前將每個頁面與相關數據一起存儲。

以下信息需要保持滾動位置:

  • 頁ID(唯一頁)
  • 頁面數據(全部頁面的HTML,小心數據過期的)
  • 分頁頁碼(僅在此頁面爲供稿時適用)
  • 當前X, Ÿ滾動位置
  • 時間戳

當下次加載頁面時,之前的信息可​​以使用本地存儲進行存儲。返回上一頁時,查看存儲中的PageID。如果存在,則抓住X或Y座標並將頁面移動到該位置。這需要一些策略性的思考,因爲如果頁面是一個惰性加載(無限滾動)類型的頁面或提要,則需要讓數據已經準備好根據頁面的位置來查找數據。

建立此係統的最簡單方法是如果您的整個網站都是基於javascript的,並且您使用的是HTML 5 History Api。防止整頁重新加載可以幫助減輕服務器的重量。如果您擔心在某些過期的數據上保持最新狀態,您可以將頁碼發送到服務器,並獲取相應的數據以填寫過期的內容。

-1

你可以得到$(window).scrollTop();值,然後將其名稱爲「頁首」另存爲一個變量在PHP,並呼籲它回到DOM準備:

$(window).load(function() { 
    $(window).scrollTo(pageTop); 
}); 

讓我知道如何繼續下去。

+0

不會有幫助,如果你有一個像加載你的內容的Facebook並且用戶在加載的第10步。如果你只是滾動到第10個「頁面」,這將失敗,因爲它不存在於你的html但 – ITroubs 2013-03-18 21:14:02

+0

編輯。我認爲window.load等待FB加載。試一試。 – 2013-03-18 21:15:14

+0

直到您告訴瀏覽器在滾動前重新加載所有動態數據,這並非有用。 – Ejzy 2013-03-18 21:18:44

相關問題