2009-05-20 10 views
6

मैंने एक प्लगइन बनाया है जिसे मैंने प्लगइन की नंगे हड्डियों (यानी कोई कार्यक्षमता, केवल संरचना) में कटौती नहीं की है और यह अभी भी मौजूद है। यह divs का आकार बदलने और दस्तावेज़ की चौड़ाई पर आधार बनाता है।क्रोम में JQuery विंडो चौड़ाई सही नहीं है

समस्या यह है कि दस्तावेजों की रिपोर्ट चौड़ाई 17px द्वारा इसकी वास्तविक चौड़ाई से कम हो जाती है और इस प्रकार divs को सही ढंग से आकार नहीं देती है।

मैं अलर्ट में डाल दिया है जहां समस्या होती है पता लगाने के लिए: से पहले "तैयार" समारोह: 1780px (सही चौड़ाई) "तैयार" समारोह के अंदर: 1763px प्लगइन के अंदर: 1763px (सभी मूल्यों से लौटे "document.width" और "$ (दस्तावेज़) .width()" एक ही परिणाम के साथ)

यह केवल क्रोम के भीतर हो रहा है और अभी भी प्लगइन के साथ प्रभावी रूप से कुछ भी कम नहीं हुआ है।

यह क्यों हो रहा है पर कोई विचार?

+0

रूप

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

का उपयोग करना चाहिए हो सकता है स्क्रॉलबार का आकार घटाया जाता है। कुछ कोड समस्या को स्थानीयकृत करने में मदद करेंगे। – Magnar

+0

मैंने इसे एक और विशिष्ट स्थान पर संकुचित कर दिया है। यदि मेरे पास तैयार फ़ंक्शन से पहले एक चेतावनी दिखाई दे रही है, तो ठीक क्लिक करने के बाद Divs सही ढंग से प्रस्तुत करते हैं। यदि यह अलर्ट हटा दिया गया है, तो यह इसकी वास्तविक चौड़ाई से 17px कम हो जाता है। क्या कोई अन्य घटनाएं या कुछ और होता है जो चेतावनी दिखाए जाने पर होता है? – Stuart

+1

मैंने स्क्रॉलबार को मजबूर करने वाले सभी प्लेसहोल्डर टेक्स्ट को हटा दिया है, और अंतराल अब स्क्रॉलबार आकार वाली जगह पर कम हो गया है। मुझे लगता है कि आप सही हैं कि स्क्रॉलबार चौड़ाई घटा दी गई है। कामकाज के लिए कोई विचार? – Stuart

उत्तर

2

मुझे पता चला है कि jQuery (विंडो) .width() सफारी और क्रोम में गलत मान देता है।

+1

वेबकिट वास्तव में चौड़ाई को परिभाषित करने पर डब्ल्यू 3 सी मानकों का पालन नहीं करता है। यह कहने के बावजूद खिड़की की चौड़ाई में स्क्रॉलबार शामिल है कि यह नहीं होना चाहिए। Boooo! – dudewad

3

jQuery documentation से लिया:

जावा स्क्रिप्ट कोड को क्रियान्वित जब एक पृष्ठ प्रदान की गई है के लिए लोड घटना प्रदान करता है, इस घटना हो सभी परिसंपत्तियों जैसे छवियों पूरी तरह से प्राप्त किया गया है जब तक चालू होने वाले नहीं है। ज्यादातर मामलों में, स्क्रिप्ट को चलाया जा सकता है जैसे ही DOM पदानुक्रम पूरी तरह से निर्मित किया गया है। हैंडलर से पहले से ही को डीओएम तैयार होने के बाद निष्पादित किया गया है, इसलिए यह आमतौर पर के लिए सबसे अच्छी जगह है अन्य सभी ईवेंट हैंडलर और अन्य jQuery कोड चलाएं। स्क्रिप्ट्स का उपयोग करते समय जो सीएसएस शैली गुणों के मूल्य पर भरोसा करते हैं, संदर्भ बाहरी स्टाइलशीट या स्क्रिप्ट को संदर्भित करने से पहले से पहले एम्बेड शैली तत्वों के लिए महत्वपूर्ण है।

मामलों में जहां कोड लोड संपत्ति पर निर्भर करता है (उदाहरण के लिए, आयाम एक छवि के आवश्यक कर रहे हैं), कोड बजाय लोड घटना के लिए कोई हैंडलर में रखा जाना चाहिए।

आप शायद ट्रिगर घटना

+0

यदि आप कंसोल में $ (विंडो) .width() डालते हैं, तो यह भी गलत है। जब यह कहा जाता है, यह कोई फर्क नहीं पड़ता है, यह सीएसएस के माध्यम से चौड़ाई के हिस्से के रूप में स्क्रॉलबार सहित क्रोम का मामला है, लेकिन जेएस में, यह स्क्रॉलबार के साथ विंडो चौड़ाई का उपयोग करता है। – Sawtaytoes

संबंधित मुद्दे