2017-08-16 11 views
17

पर वास्तविक व्यूपोर्ट चौड़ाई और ऊंचाई निर्धारित करने के लिए कैसे करें I पृष्ठ पर ज़ूम किए जाने पर आईओएस पर पेज चौड़ाई और ऊंचाई निर्धारित करने के रूप में मैं इस तरह के आसान कार्य पर अटक गया हूं।आईओएस

समस्या यह है कि कुछ वेब साइटों अजीब लेआउट है और इस तरह दिखता है:

enter image description here

यह एक नहीं बढ़ाया पेज है और यह 1164x1811 पिक्सल के संकल्प है और जो सही है। मुझे ये मान window.innerWidth और window.innerHeight से प्राप्त हुए हैं। हाइलाइट किया गया क्षेत्र एक बॉडी एलिमेंट है और इसमें 1024x1594 पिक्सेल का संकल्प है, जो मायने रखता है।

अगला मैं पिंच-टू-जूम का उपयोग में पेज ज़ूम करने के लिए और इस कि यह कैसा दिखता है:

enter image description here

अब, जब मैं पृष्ठ आकार पाने के लिए मैं क्रमशः window.innerWidth और window.innerHeight से 1024x1594 पिक्सल मिला कोशिश कर । ये मान शरीर के आकार के समान सटीक हैं।

तो सवाल यह है कि ज़ूम के साथ सही पेज आकार कैसे प्राप्त करें।

मैंने क्रोम में इस विशेष मामले का परीक्षण किया है और सही परिणाम प्राप्त किया है: ज़ूम करने के बावजूद यह हमेशा 1164x1811 पिक्सेल है।

+0

क्या आप ब्राउज़र में पहले अपना यूआरएल जांच लेंगे। इसे सही तरीके से काम करने के लिए उत्तरदायी यूआरएल का प्रयोग करें। – Rex

+0

@rex बात यह है कि मुझे पृष्ठ के मोबाइल/डेस्कटॉप प्रतिनिधित्व के बावजूद व्यूपोर्ट आकार निर्धारित करने में सक्षम होना चाहिए, इसलिए उत्तरदायी पर स्विच करना –

उत्तर

5

संपादित करें: उपयोग document.body.clientWidth और document.body.clientHeight, गणना आप इच्छा के रूप में प्राप्त करने के लिए अपने मूल समाधान अब अप्रचलित माना जाता है।

आप document.width और document.height का उपयोग आईओएस सफारी पर मूल पृष्ठ आकार को पुनः प्राप्त कर सकते हैं, भले ही आप पिंच-जूम है।

यहां पुराने Space Jam site पर एक परीक्षण है (जो किसी साइट के बारे में सोचने की कोशिश करते समय ध्यान में आया जो निश्चित रूप से उत्तरदायी नहीं होगा)।

enter image description here

+0

अजीब विकल्प नहीं है, ये गुण आईओएस 10.3 पर अपरिभाषित हैं। इन्हें विनिर्देशन में अप्रचलित के रूप में चिह्नित किया गया है :( –

+0

@nicholas_r आप बिल्कुल सही हैं - मेरा आईओएस सिम्युलेटर 9 पर सेट किया गया था। मुझे 10 में अपरिभाषित हो रहा है। कृपया, कृपया! –

+0

@nicholas_r मेरा उत्तर अपडेट किया गया - कृपया 'दस्तावेज़ का उपयोग करें ज़ूम किए जाने पर दस्तावेज़ के मूल आयाम प्राप्त करने के लिए .body.clientWidth' और 'document.body.clientHeight'। आईओएस 10.3 में सफलतापूर्वक परीक्षण किया गया। –

2

यहाँ एक जटिल काम है लेकिन थोड़े बेकार तरीका है: एक पृष्ठ आकार तत्व तो गणना बनाओ/उसके वास्तविक आकार मिलता है।

let page_size = { height: null, width: null }; 
{ 
    let div = document.createElement('div'); 
    (styles => Object.keys(styles).forEach(k => div.style[k] = styles[k]))({ 
     height: '100vh', width: '100vw', 
     position: 'fixed', 
     top: '-100vh', left: '-100vw' 
    }) 
    document.body.appendChild(div); 
    page_size.height = div.offsetHeight; 
    page_size.width = div.offsetWidth; 
} 
+0

पर काम करने के लिए किसी भी विधि की तलाश कर रहा हूं। पहले से ही समाप्त हो चुका है और यह सभी मामलों में काम नहीं करता है, खासकर प्रश्न में दिए गए मामले में। आप आईओएस डिवाइस से habrahabr.ru पर जाकर और साइट के डेस्कटॉप संस्करण पर स्विच करके इसे आजमा सकते हैं –