2017-03-04 9 views
7
if(window.innerWidth) { 
    return window.innerWidth; 
} 
return $(window).width(); 

मैं उपरोक्त कोड का उपयोग वेब पेज की उपलब्ध चौड़ाई को खोजने के लिए कर रहा हूं। यह ज्यादातर समय काम करता है। लेकिन कुछ मोबाइल ब्राउज़र (मोबाइल क्रोम और कुछ) में और कभी-कभी डेस्कटॉप वेबसाइट में यह 0 लौटाता है। मुझे नहीं पता, क्या गलत हुआ?window.innerwidth का अप्रत्याशित व्यवहार

Mozilla/5.0 (लिनक्स, एंड्रॉयड 5.1.1, SM-J500M बिल्ड/LMY48B) AppleWebKit/537.36 (KHTML, छिपकली की तरह) क्रोम/56.0.2924.87 मोबाइल सफारी/537,36

इस में से एक है उपयोगकर्ता एजेंट जहां यह असफल रहा है। ज्यादातर यह एंड्रॉइड ब्राउज़र में मोबाइल क्रोम में होता है।

+1

यह कोड कब चल रहा है? पृष्ठ पृष्ठ चौड़ाई पाने का प्रयास करते समय पृष्ठ पूरी तरह लोड हो जाता है? – Pytth

+0

मैंने यह व्यवहार देखा है जब कोई टैबलेट या मोबाइल डिवाइस "अभिविन्यास परिवर्तन एनीमेशन" (बेहतर शब्द की इच्छा के लिए) खेल रहा है। यदि आप दस्तावेज़ पर ईवेंट को ऑन्रेस करना सुन रहे हैं, और पोर्ट्रेट से परिदृश्य के बीच संक्रमण होता है, तो व्यूपोर्ट आकार को पढ़ने के दौरान कभी-कभी 0 में परिणाम होता है जबकि संक्रमण एनीमेशन चल रहा है। मैं केवल कल्पना कर सकता हूं कि यह ब्राउज़र के अंदर अनुकूलन प्रतिपादन का परिणाम है। – jduncanator

उत्तर

5

आप if में एक बूलियन होने के लिए परीक्षण को मजबूर करने का प्रयास कर सकते हैं।

if(!!window.innerWidth) { 
    return window.innerWidth; 
} 
return $(window).width(); 

पर एक समारोह में return बयान हमेशा सबसे अच्छा अभ्यास नहीं माना जाता है की तुलना में अधिक होने। आप निम्नानुसार इस स्पष्ट कर सकते हैं।

return !!window.innerWidth ? 
    window.innerWidth : 
    $(window).width(); 

यदि यह काम नहीं करता है तो समस्या यह है कि आपको jQuery की चौड़ाई विधि में एक बग मिला है।

+1

एक बूलियन चेक हाहा मजबूर करने का मजाकिया तरीका हैहा। मुझे लगता है कि इस मामले में आप 'रिटर्न विंडो' भी लिख सकते हैं। विजेताविड्थ || $ (विंडो)। विड्थ(); 'चूंकि window.innerWidth 0 देता है या अपरिभाषित हम अभी भी jQuery विधि को आजमा सकते हैं। – antoni

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