Tldr
तुम सिर्फ खिड़की ऊंचाई, क्रॉस-ब्राउज़र क्वेरी करने के लिए, और यह के साथ किया जा, jQuery.documentSize का उपयोग करें और $.windowHeight()
फोन चाहते हैं। अपने स्वयं के समाधान को लागू करने के लिए, पढ़ें।
jQuery का उपयोग कब करें या दस्तावेज़
jQuery के $(window).height()
की clientHeight
document.documentElement.clientHeight
के लिए एक आवरण है। ब्राउज़र स्क्रॉल बार द्वारा कवर की गई जगह को छोड़कर, यह आपको व्यूपोर्ट की ऊंचाई देता है। आम तौर पर, यह ठीक काम करता है और निकट-सार्वभौमिक ब्राउज़र समर्थन का आनंद लेता है। लेकिन quirks on mobile, and in iOS in particular हैं।
आईओएस में, वापसी मान दिखावा जो URL और टैब सलाखों दिखाई दे रहे हैं, भले ही वे नहीं हैं। जैसे ही उपयोगकर्ता स्क्रॉल करता है और ब्राउजर न्यूनतम UI पर स्विच करता है, वे छिप जाते हैं।प्रक्रिया में लगभग 60px की खिड़की की ऊंचाई में वृद्धि हुई है, और यह clientHeight
(या jQuery में) में दिखाई देता है।
clientHeight
layout viewport, not the visual viewport का आकार देता है, और इसलिए ज़ूम स्थिति को प्रतिबिंबित नहीं करता है।
तो ... मोबाइल पर इतना अच्छा नहीं है।
जब window.innerHeight
उपयोग करने के लिए एक और संपत्ति आप क्वेरी कर सकता है: window.innerHeight
। यह
- खिड़की ऊंचाई देता है,
- दृश्य व्यूपोर्ट पर आधारित है, यानी ज़ूम स्थिति को दर्शाता है,
- अद्यतन किया जाता है जब ब्राउज़र न्यूनतम यूआई (मोबाइल सफारी) में प्रवेश करती है,
- लेकिन इसमें स्क्रॉल बार द्वारा कवर क्षेत्र शामिल है।
अंतिम बिंदु का अर्थ है कि आप इसे प्रतिस्थापन के रूप में नहीं छोड़ सकते हैं। साथ ही, यह IE8 में समर्थित नहीं है, और फ़ायरफ़ॉक्स prior to FF25 (अक्टूबर 2013) में टूटा हुआ है।
लेकिन इसका उपयोग मोबाइल पर प्रतिस्थापन के रूप में किया जा सकता है क्योंकि मोबाइल ब्राउज़र एक अस्थायी ओवरले के रूप में स्क्रॉल बार प्रस्तुत करते हैं जो व्यूपोर्ट में स्थान नहीं लेते हैं - window.innerHeight
और d.dE.clientHeight
उस संबंध में वही मान लौटाते हैं।
पार ब्राउज़र समाधान
तो एक क्रॉस-ब्राउज़र समाधान, वास्तविक खिड़की ऊंचाई जानने के लिए, यह (छद्म कोड) की तरह काम करता है:
IF the size of browser scroll bars is 0 (overlay)
RETURN window.innerHeight
ELSE
RETURN document.documentElement.clientHeight
यहाँ पकड़ कैसे करने के लिए है किसी दिए गए ब्राउज़र के लिए स्क्रॉल बार के आकार (चौड़ाई) को निर्धारित करें। आपको इसके लिए एक परीक्षण चलाने की जरूरत है। यह विशेष रूप से कठिन नहीं है - यदि आप चाहें तो my implementation here या original one by Ben Alman पर नज़र डालें।
यदि आप अपना खुद का रोल नहीं करना चाहते हैं, तो आप मेरा एक घटक भी उपयोग कर सकते हैं - jQuery.documentSize - और $.windowHeight()
call के साथ किया जाना चाहिए।
मैं इस समस्या में भाग गया, लेकिन [इस सवाल] के लिए एक शुद्ध सीएसएस समाधान धन्यवाद (http://stackoverflow.com/questions/5729525/ipad-safari-100-height-issue)। –