2012-10-04 12 views
17

मैं एक वेब ऐप पर काम कर रहा हूं जिसमें 640 पीएक्स की चौड़ाई है।एंड्रॉइड व्यूपोर्ट सेटिंग "उपयोगकर्ता-स्केलेबल = नहीं" व्यूपोर्ट की चौड़ाई/ज़ूम स्तर

दस्तावेज़ head में मैं

<meta name="viewport" content = "width=640, user-scalable=no" /> 

सेट इसलिए सामग्री अच्छी तरह से दिखाया गया है और क्षैतिज फैला है।
यह आईओएस पर पूरी तरह से काम करता है लेकिन एंड्रॉइड में ब्राउजर वेबसाइट को ज़ूम करता है ताकि उपयोगकर्ता को ज़ूम आउट और पूरे पेज पर डबल क्लिक करना पड़े।

जब मैं इस तरह user-scalable टैग बाहर छोड़ने के लिए व्यूपोर्ट सेटिंग को परिवर्तित:

<meta name="viewport" content="width=640" /> 

Android ब्राउज़र 640px करने के लिए अच्छी तरह से समायोजित कर देता है - तो यह काम करता है।
समस्या अब हालांकि है, कि उपयोगकर्ता user-scalable टैग सेट नहीं होने के बाद एंड्रॉइड और आईओएस पर ज़ूम इन और आउट कर सकते हैं।

मैं स्केलिंग को कैसे रोक सकता हूं और साथ ही एंड्रॉइड पर व्यूपोर्ट चौड़ाई को 640px पर सेट कर सकता हूं?

+1

यह ब्राउज़र की बग है। मैंने सब कुछ करने की कोशिश की है, कुछ भी काम नहीं किया। अंत में मैंने केवल इस ब्राउज़र से 'उपयोगकर्ता-स्केलेबल = नहीं' हटा दिया। यह बढ़िया काम करता है। –

उत्तर

35

तो जैसे व्यूपोर्ट प्रतिपादन कोशिश कर रहा है:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 

सेटिंग पैमाने सेटिंग्स कितनी दूर वे ज़ूम कर सकते हैं पर उपयोगकर्ता प्रतिबंध सेट है, और इसलिए आप एक ही राशि के लिए प्रारंभिक और अधिकतम निर्धारित करते हैं, इस समस्या को ठीक करना चाहिए।

अद्यतन: मैं नीचे की स्थापना करके सभी को एक साथ Android उपकरणों के लिए मेरी बग को ठीक करने में सक्षम था:

<meta name="viewport" content="width=640px, initial-scale=.5, maximum-scale=.5" /> 

मैंने यह भी देखा है कि इस तरह पी टैग के रूप में कुछ सामग्री, स्क्रीन पर बह रहा नहीं कर रहे थे, तो उस के लिए हैक पृष्ठभूमि-छवि संपत्ति को खाली स्ट्रिंग के साथ किसी भी सामग्री पर जोड़ना होगा और लेआउट व्यू में नहीं जा रहा है। उम्मीद है कि यह आपके लिए इस समय मदद करता है।

+0

स्पष्ट रूप से जब प्रारंभिक-स्केल को 1.0 पर सेट करता है तो यह 320px में समायोजित होता है, ताकि पृष्ठ ज़ूम किया जा सके (मेरे पृष्ठ की चौड़ाई 640px है)। शुरुआती-पैमाने को 0.5 कार्यों के साथ-साथ 640 पीएक्स पर सेट करना। उपयोगकर्ता-स्केलेबल = कोई विकल्प एंड्रॉइड तोड़ता है इससे कोई फर्क नहीं पड़ता कि मैं उपयोग करता हूं, या; - तो अभी भी कोई समाधान नहीं :( – Horen

+0

तो आपने 640px की एक निश्चित सामग्री चौड़ाई भी कोशिश की है? मैंने कल मेटा टैग में उपयोगकर्ता-स्केलेबल के बिना यह किया था और एंड्रॉइड डिवाइस के लिए 640 पीएक्स की एक निश्चित चौड़ाई मैं परीक्षण कर रहा था, और दोनों ऊपर की मेरी सेटिंग्स के साथ चुटकी ज़ूम और डबल टैप ज़ूम अक्षम कर दिए गए थे। –

+1

मैंने '<मेटा नाम =" व्यूपोर्ट "सामग्री =" चौड़ाई = 640, उपयोगकर्ता-स्केलेबल = नहीं "/>' और '<मेटा नाम =" व्यूपोर्ट " सामग्री = "चौड़ाई = 640; उपयोगकर्ता-स्केलेबल = नहीं" /> दोनों एंड्रॉइड ब्राउजर को पेज को ज़ूम किया गया है – Horen

0

मैं एक ही स्थिति थी, तो आप सामग्री चाहते हैं, तो हमेशा उपयोगकर्ता में ज़ूम/बाहर, निम्न मेटा टैग का उपयोग करने की अनुमति के बिना स्क्रीन की चौड़ाई फिट करने के लिए

(यह क्या करने के लिए चौड़ाई आप दे कोई बात नहीं काम करेंगे)
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
+0

स्पष्ट रूप से जब प्रारंभिक-स्केल को 1.0 पर सेट करता है तो यह 320px में समायोजित होता है, ताकि पृष्ठ ज़ूम किया जा सके (मेरे पृष्ठ की चौड़ाई 640px है)। शुरुआती-पैमाने को 0.5 कार्यों के साथ-साथ 640 पीएक्स पर सेट करना। उपयोगकर्ता-स्केलेबल = कोई विकल्प एंड्रॉइड तोड़ता है इससे कोई फर्क नहीं पड़ता कि मैं उपयोग करता हूं, या; - तो अभी भी कोई समाधान नहीं :( – Horen

7

मैं चाहता था कि मोबाइल हमेशा एक वेबसाइट के रूप में 640px चौड़ा दिखाए जो किसी अन्य डिज़ाइन को तोड़ देगा। (एक डिजाइन मैंने नहीं बनाया ..) इस प्रकार मैं मोबाइल उपयोगकर्ताओं के लिए ज़ूमिंग अक्षम करना चाहता था। क्या मुझे मेरे लिए काम किया निम्नलिखित है:

- अद्यतन 2013-10-31

सबसे पहले, वहाँ कोई रास्ता नहीं आप जावास्क्रिप्ट के बिना यह कर सकता है। आपको उपयोगकर्ता एजेंट स्ट्रिंग की जांच करनी होगी। इसलिए मैं एक मोबाइल-viewport.js बनाया है और क्लोज़िंग टैग से पहले स्क्रिप्ट में शामिल हैं:

function writeViewPort() { 
    var ua = navigator.userAgent; 
    var viewportChanged = false; 
    var scale = 0; 

    if (ua.indexOf("Android") >= 0 && ua.indexOf("AppleWebKit") >= 0) { 
     var webkitVersion = parseFloat(ua.slice(ua.indexOf("AppleWebKit") + 12)); 
     // targets android browser, not chrome browser (http://jimbergman.net/webkit-version-in-android-version/) 
     if (webkitVersion < 535) { 
      viewportChanged = true; 
      scale = getScaleWithScreenwidth(); 
      document.write('<meta name="viewport" content="width=640, initial-scale=' + scale + ', minimum-scale=' + scale + ', maximum-scale=' + scale + '" />'); 
     } 
    } 

    if (ua.indexOf("Firefox") >= 0) { 
     viewportChanged = true; 
     scale = (getScaleWithScreenwidth()/2); 
     document.write('<meta name="viewport" content="width=640, user-scalable=false, initial-scale=' + scale + '" />'); 
    } 

    if (!viewportChanged) { 
     document.write('<meta name="viewport" content="width=640, user-scalable=false" />'); 
    } 

    if (ua.indexOf("IEMobile") >= 0) { 
     document.write('<meta name="MobileOptimized" content="640" />'); 
    } 

    document.write('<meta name="HandheldFriendly" content="true"/>'); 
} 

function getScaleWithScreenwidth() { 
    var viewportWidth = 640; 
    var screenWidth = window.innerWidth; 
    return (screenWidth/viewportWidth); 
} 

writeViewPort(); 

स्क्रिप्ट जांच करता है कि आगंतुक एक Android (नहीं क्रोम) या Firefox ब्राउज़र है। एंड्रॉइड ब्राउज़र चौड़ाई = 640 और उपयोगकर्ता-स्केलेबल = झूठी के संयोजन का समर्थन नहीं करता है, और फ़ायरफ़ॉक्स ब्राउज़र में कुछ अजीब कारणों के लिए डबल स्क्रीन चौड़ाई होती है। यदि आगंतुक के पास एक विंडोज फोन आईई ब्राउज़र है मोबाइल ऑप्टीमाइज्ड सेट है।

+0

ओह, इसके लिए धन्यवाद। मुझे अपनी विशिष्ट साइट के लिए काम करने के लिए थोड़ा सा ट्विक करना पड़ा, लेकिन अब मुझे एक ऐसी साइट मिलती है जो पुराने एंड्रॉइड डिवाइस पर भी ब्राउज़र को ठीक से फिट करे। – jeffedsell

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