मैं एक परियोजना मैं पर काम किया पर बहुत ही बात पर विचार होता है। एक विकल्प जिसे मैंने सोचा था, बैक बटन को उस स्थान पर वापस जाने की अनुमति देना था जहां लिंक क्लिक किया गया था (सामान्य ब्राउज़िंग की तरह)।
सबसे पहले, आपको रिकॉर्ड करने की आवश्यकता है कि अनंत पृष्ठ को किस प्रकार स्क्रॉल करना है ताकि आप उस खंड को फिर से लोड कर सकें। आप window.location.hash
मान के साथ कुछ चतुर खेल के साथ ऐसा कर सकते हैं। यदि आप my answer to this question देखते हैं, तो मैं Asual's address plugin का उपयोग करके सादे जावास्क्रिप्ट या jQuery में इसे और अधिक विस्तार से समझाता हूं।
इसके बारे में बुनियादी हिस्सा इस तरह करना चाहते हैं:
// Whatever you're using to load the next page
function scrollToNextPage(page){
// Your infinite scrolling stuff
$.address.parameter("currentPage", page);
}
$.address.externalChange(function(){
var page = $.address.parameter("currentPage"),
top = $.address.parameter("linkTop");
loadAjaxUpTo(page);
$('html, body').animate({ scrollTop: top }, 500);
});
// Set a parameter for the location of a clicked link
$("a").live('click', function(){
$.address.parameter("linkTop", $(this).scrollTop());
});
मैं पिछले बिट को लागू नहीं किया था (हो रही लिंक की स्थिति को क्लिक किया था), लेकिन मैं नहीं देख सकते हैं क्यों यह काम नहीं होगा । इससे खिड़की अच्छी तरह से स्क्रॉल कर सकती है जहां आप कहां हैं। आप इसे हमेशा लोड किए गए पृष्ठ पर एंकर के साथ सेट कर सकते हैं (लेकिन जब आप इसे स्क्रॉल करते हैं, तो यह हमेशा पृष्ठ के शीर्ष पर जाएगा)।
हालांकि कुछ अंक, मैं इस की अनुशंसा नहीं करता। कम से कम प्रोजेक्ट के लिए मैं कर रहा था, यह वास्तव में आवश्यक नहीं था। मेरी परियोजना में, हमने उम्मीद की थी कि उपयोगकर्ता अपने विकल्पों को बदलने के लिए वापस जाएं और यह पता लगाएगा कि स्क्रॉलिंग कोई समस्या नहीं होगी (हालांकि हमारे पास स्क्रॉल करने के लिए बहुत से पृष्ठ नहीं थे)। AJAX (और छवियों को सेट करने के लिए आपकी जावास्क्रिप्ट) को फिर से लोड और निष्पादित करने की आवश्यकता है जो आपको कितने पृष्ठों को पुनः लोड करने की आवश्यकता है, इस पर निर्भर करता है। लिंक पर स्क्रॉल करने के लिए समय के शीर्ष पर (आप केवल window.scrollTo
कर सकते हैं लेकिन आपको एनीमेशन नहीं मिलता है, इसलिए सब कुछ बहुत झटकेदार है। आप हमेशा उस पृष्ठ को लोड कर सकते हैं जिस पर व्यक्ति था और पिछले पृष्ठों के बारे में भूल जाओ, लेकिन आप अभी भी उस तरह के उपयोगकर्ता अनुभव तोड़ने।या (मैंने जो कोशिश की) दो तरह की अनंत स्क्रॉल को लागू करना था। तो यह पेज उपयोगकर्ता से और prepend
पिछले पृष्ठों क्लिक किया अगर वे ऊपर स्क्रॉल लोड होगा - यह है कि क्या यह हालांकि था के लिए बहुत ज्यादा काम था।
एक और मुद्दा यह है कि, अगर आप अभी भी यह करने के लिए थे, तो आप अपने पृष्ठों मिल (और यह सुनिश्चित करें कैश तुरंत समाप्त होने वाली नहीं है) के लिए एक GET
अनुरोध का उपयोग करना चाहते है। मैंने पाया कि जीएटी अनुरोध के साथ अजाक्स द्वारा अनुरोध किए गए पृष्ठ कैश से लेंगे (कम से कम कुछ ब्राउज़रों पर मैंने कोशिश की थी)। POST
पर अपने विवरण भेजना हमेशा कैश को अनदेखा कर देगा।
ट्विटर फिर से पृष्ठ को पुनः लोड नहीं करता है। यदि आप Twitter.com/jack पर जाते हैं, तो पृष्ठ पर जाने के लिए किसी अन्य उपयोगकर्ता पर क्लिक करें। फिर "बैक" पर क्लिक करें, आपको पता चलेगा कि ट्विटर अतिरिक्त सामान "पुनः लोड नहीं" करता है (फायरबग में नेट देखें)। – TIMEX
यूप - यह सही है। मैं यह नहीं कह रहा हूँ कि यह एक अच्छा विचार है - मेरे अनुभव में, मैंने पाया कि इसे और अधिक परेशानी की तुलना में यह उपयोगकर्ता के अनुभव को बदतर बना दिया लायक था और वास्तव में था। यह सिर्फ इतना है कि मैंने वर्णन की तकनीक के साथ * संभव है :) –
@ जोनाथन बोल्स्टर तो आप loadAjaxUpTo (पृष्ठ) को कैसे कार्यान्वित करेंगे? यह $ जाना चाहिए (विंडो) .scrollTop() अपने उदाहरण में जिस तरह से। – confile