2011-09-19 17 views
9

से स्वतंत्र स्क्रॉल याद रखें मुझे ऑनलाइन पुस्तकों को पढ़ने के लिए एक वेबपृष्ठ मिला है। मैं दस्तावेज़ के अंदर स्थिति को सहेजना चाहता हूं ताकि जब कोई उपयोगकर्ता अपना पठन फिर से शुरू कर लेता है, तो वह उस बिंदु से शुरू होता है जहां वह पहले था।एचटीएमएल/जावास्क्रिप्ट: विंडो आकार

मैं window.pageYOffset जैसी चीजों का उपयोग करके स्क्रॉल प्राप्त कर सकता हूं, लेकिन यह ब्राउज़र विंडो आकार पर निर्भर करता है। दूसरे शब्दों में, यदि आप अपनी खिड़की को संकुचित करते हैं, तो वही पाठ एक अलग स्क्रॉल पर होगा (उदाहरण के लिए छवि देखें)।

तो मुझे स्क्रॉल को मापने के एक विंडो आकार के स्वतंत्र तरीके से आने की आवश्यकता है। कोई विचार?

नोट: मुझे केवल मोज़िला आधारित ब्राउज़र पर काम करने की आवश्यकता है।

Problem example

अग्रिम

+0

+1, सबसे अच्छा सवाल मैंने पूरे दिन देखा है! – Brad

+0

मुझे पदों में बहुत अंतर नहीं दिख रहा है। आपने जो अधिकतम विचलन देखा है वह क्या है? –

+2

यह भी देखें: http://stackoverflow.com/questions/7331701/how-to-now-what-lines-chars-are-currently-visible-in-a-textarea यदि आप इसे समझ सकते हैं, तो अगले लोड पर एक एंकर या अन्य तत्व में ड्रॉप कर सकते हैं और एक स्क्रॉल भी कर सकते हैं। – Brad

उत्तर

1

अगर मेरे धारणा सही है कि दस्तावेज़ ऊंचाई के संबंध में रिश्तेदार scrollTop मूल्य हमेशा एक ही है धन्यवाद, समस्या नहीं बल्कि बस हल किया जा सकता।

पहले पढ़ने प्रतिशत के साथ एक कुकी सेट:

var read_percentage = read_cookie('read_percentage'); 
document.body.scrollTop = document.body.offsetHeight * read_percentage 

नोट read_cookie है कि:

var read_percentage = document.body.scrollTop/document.body.offsetHeight; 
document.cookie = 'read_percentage=' + read_percentage + '; expires=Thu, 2 Aug 2021 20:47:11 UTC; path=/' 

अगले पृष्ठ लोड पर आप शरीर पर scrollTop मूल्य निर्धारित करके स्थिति बहाल कर सकते हैं एक ब्राउज़र समारोह नहीं है। आपको इसे लागू करना होगा। उदाहरण http://www.quirksmode.org/js/cookies.html

पर पाया जा सकता है मैंने इसे एक बड़े पृष्ठ पर परीक्षण किया और यह काफी ठीक काम किया।

2

Aaaaaaand मेरी संस्करण है देर हो गई ... फिर ... लेकिन कम से कम मैं एक डेमो है:

मेरे विधि भी percents का उपयोग करता है (पुस्तक स्थिति/(स्क्रॉल ऊंचाई - कंटेनर ऊंचाई))

http://jsfiddle.net/wJhFV/show

$(document).ready(function(){ 
    var container = $("#container")[0]; 
    container.scrollTop = 
     Number(localStorage["currentPosition"]) * 
     (container.scrollHeight - $(container).height()) 

}) 

$("#container").scroll(function(){ 
    console.log("set to: ") 
     console.log(
     localStorage["currentPosition"] = 
      (this.scrollTop)/
      (this.scrollHeight - $(this).height()) 
     ); 
}) 
संबंधित मुद्दे