मैं jquery का उपयोग करके एक साइट लिख रहा हूं जो बार-बार $(window).width()
और $(window).height()
पर आधारित स्थिति और आकार तत्वों पर आधारित है व्यूपोर्ट आकार।
समस्या निवारण में मुझे पता चला कि व्यूपोर्ट का आकार बदलने पर उपरोक्त jquery कार्यों में बार-बार कॉल में मुझे थोड़ा अलग व्यूपोर्ट आकार रिपोर्ट मिल रही है।
आश्चर्य है कि कोई विशेष मामला है या नहीं, जब ऐसा होता है, तो यह होता है, या यदि यह वही तरीका है। रिपोर्ट किए गए आकारों में अंतर 20px या उससे कम है, ऐसा प्रतीत होता है। यह सफारी 4.0.4, फ़ायरफ़ॉक्स 3.6.2 और मैक ओएस एक्स 10.6.2 पर क्रोम 5.0.342.7 बीटा में होता है। मैंने अभी तक अन्य ब्राउज़रों का परीक्षण नहीं किया क्योंकि यह ब्राउज़र के लिए विशिष्ट नहीं प्रतीत होता है। मैं यह समझने में भी असमर्थ था कि अंतर क्या निर्भर करता है, यदि यह व्यूपोर्ट आकार नहीं है, तो क्या कोई अन्य कारक हो सकता है जिससे परिणाम अलग हो जाएं?
किसी भी अंतर्दृष्टि की सराहना की जाएगी।
अद्यतन:
यह $(window).width()
और $(window).height()
के मूल्यों है कि बदल रहे हैं नहीं है। यह उन चर के मान हैं जिनका उपयोग मैं उपरोक्त मानों को संग्रहीत करने के लिए कर रहा हूं।
यह स्क्रॉलबार नहीं है जो मानों को दोष दे रहे हैं, परिवर्तनीय मान बदलते समय कोई स्क्रॉलबार दिखाई नहीं देता है। मेरे चर में मूल्यों को संग्रहीत करने के लिए मेरा कोड यहां दिया गया है (जो मैं बस कर रहा हूं इसलिए वे कम हैं)।
(यह सब $(document).ready()
के भीतर है)
// शुरू में चर घोषित भीतर .ready()
var windowWidth = $(window).width(); //retrieve current window width
var windowHeight = $(window).height(); //retrieve current window height
var documentWidth = $(document).width(); //retrieve current document width
var documentHeight = $(document).height(); //retrieve current document height
var vScrollPosition = $(document).scrollTop(); //retrieve the document scroll ToP position
var hScrollPosition = $(document).scrollLeft(); //retrieve the document scroll Left position
function onm_window_parameters(){ //called on viewer reload, screen resize or scroll
windowWidth = $(window).width(); //retrieve current window width
windowHeight = $(window).height(); //retrieve current window height
documentWidth = $(document).width(); //retrieve current document width
documentHeight = $(document).height(); //retrieve current document height
vScrollPosition = $(document).scrollTop(); //retrieve the document scroll ToP position
hScrollPosition = $(document).scrollLeft(); //retrieve the document scroll Left position
}; //end function onm_window_parameters()
मैं मूल्यों के खिलाफ ऊपर चर जांच करने के लिए एक चेतावनी बयान डाला कार्यों otehr को दिखाई है कि वे होल्डिंग माना जाता है। $(item).param()
मान लगातार बने रहते हैं, लेकिन मेरे चर उन कारणों से बदलते हैं जिन्हें मैं समझ नहीं सकता हूं।
मैंने उन स्थानों की तलाश की है जहां मेरा कोड प्रश्न में चर के मूल्य को बदल सकता है, क्योंकि उनके सेट मानों को पुनः प्राप्त करने के विपरीत और कोई भी नहीं ढूंढ सकता है। अगर यह संभावना है तो मैं पूरे शेबांग को कहीं भी पोस्ट कर सकता हूं।
बीटीडब्ल्यू, आप ठीक बाद में थे ... जबकि समस्या निवारण मैंने देखा कि वहां स्क्रॉलबार थे। वे इतने संक्षेप में दिखाई दिए कि उन्हें मिड-निष्पादन में रुकने वाली स्क्रिप्ट के साथ डीबग मोड को छोड़कर देखा नहीं जा सका। एक बार जब मैंने उपरोक्त चर और फ़ंक्शन को हटा दिया, तो कुछ तत्व अभी भी स्थिति से कूद गए - इसे स्क्रिप्ट चरणों के क्रम में करना पड़ा - मुझे बस यह सुनिश्चित करना पड़ा कि मैंने अपनी डाली गई छवियों को सीएसएस को बाएं रखने के लिए रीसेट किया है: 0 छवि डालने से पहले । कहानी के लिए नैतिक: सिर्फ इसलिए कि स्क्रॉलबार लंबे समय तक दिखाई नहीं दे रहे हैं, इसका मतलब यह नहीं है कि वे वहां नहीं थे! –
मैं इस प्रश्न का भी उपयोग करता हूं: http://stackoverflow.com/questions/2854407/javascript-jquery-window-resize-how-to-fire-after-the-resize-is-completed ताकि आप आकार बदलने के बाद जांच सकें घटना कुछ भी करने से पहले समाप्त हो गया है। आपकी स्क्रिप्ट आपके द्वारा आकार देने वाले प्रत्येक पिक्सेल को .resize() फ़ंक्शन में जो भी चलती है, उतनी ही बेहतर अभ्यास का इंतजार करना है। – MarkP