我正在使用JS,JQuery,& PHP和試圖做的是解決無限滾動問題。問題是,如果您在頁面上長時間滾動並使用ajax加載更多頁面,請單擊鏈接轉到新頁面,如何在使用瀏覽器時自動轉到舊頁面中的相同位置新頁面上的後退按鈕?訪問另一頁後保留瀏覽器滾動位置
。使用ajax在滾動中加載新頁面。
我正在使用JS,JQuery,& PHP和試圖做的是解決無限滾動問題。問題是,如果您在頁面上長時間滾動並使用ajax加載更多頁面,請單擊鏈接轉到新頁面,如何在使用瀏覽器時自動轉到舊頁面中的相同位置新頁面上的後退按鈕?訪問另一頁後保留瀏覽器滾動位置
。使用ajax在滾動中加載新頁面。
我對我的問題提出的解決方案是在導航離開頁面之前將每個頁面與相關數據一起存儲。
以下信息需要保持滾動位置:
當下次加載頁面時,之前的信息可以使用本地存儲進行存儲。返回上一頁時,查看存儲中的PageID。如果存在,則抓住X或Y座標並將頁面移動到該位置。這需要一些策略性的思考,因爲如果頁面是一個惰性加載(無限滾動)類型的頁面或提要,則需要讓數據已經準備好根據頁面的位置來查找數據。
建立此係統的最簡單方法是如果您的整個網站都是基於javascript的,並且您使用的是HTML 5 History Api。防止整頁重新加載可以幫助減輕服務器的重量。如果您擔心在某些過期的數據上保持最新狀態,您可以將頁碼發送到服務器,並獲取相應的數據以填寫過期的內容。
你可以得到$(window).scrollTop();值,然後將其名稱爲「頁首」另存爲一個變量在PHP,並呼籲它回到DOM準備:
$(window).load(function() {
$(window).scrollTo(pageTop);
});
讓我知道如何繼續下去。
我希望Facebook能夠實現這一點。 – awendt 2013-03-18 20:25:47
每當你的ajax得到新的東西,你必須保存當前加載狀態的會話。那麼當用戶訪問其他站點並返回到前一個站點時,您只需加載以前的狀態並滾動到它。 – ITroubs 2013-03-18 20:30:24
@ITroubs有趣。因此,通過這種實施方式,您是否看到任何缺點?如果頁面有10,000-15,000行html,該怎麼辦? – stwhite 2013-03-18 20:34:04