2012-09-20 7 views
5

question आईओ 4 उपयोगकर्ता एजेंट और iOS 5.0 उपयोगकर्ता एजेंट के बारे में SO पर पूछा गया था।आईफोन 5 और उसके नीचे किसी भी आईओएस डिवाइस का पता लगाने

मैं विभिन्न मोबाइल डिवाइस, व्यूपोर्ट और स्क्रीन का पता लगाने के लिए निम्न का उपयोग करता हूं।

मैं आईफोन 5 और अन्य सभी आईओएस उपकरणों के बीच अंतर करने में सक्षम होना चाहता हूं। जहां तक ​​मुझे पता है, आईओएस 5.0 उपयोगकर्ता एजेंट var iPhone5 का पता लगाने के लिए मैं जिस लाइन का उपयोग कर रहा हूं, वह आईओएस 5.0 चलाने वाले किसी भी आईओएस डिवाइस पर भी लागू होगा, इसलिए तकनीकी रूप से यह गलत है।

var pixelRatio = window.devicePixelRatio || 1; 

var viewport = { 
    width: window.innerWidth, 
    height: window.innerHeight 
}; 

var screen = { 
    width: window.screen.availWidth * pixelRatio, 
    height: window.screen.availHeight * pixelRatio 
}; 

var iPhone = /iPhone/i.test(navigator.userAgent); 
var iPhone4 = (iPhone && pixelRatio == 2); 
var iPhone5 = /iPhone OS 5_0/i.test(navigator.userAgent); // ? 
var iPad = /iPad/i.test(navigator.userAgent); 
var android = /android/i.test(navigator.userAgent); 
var webos = /hpwos/i.test(navigator.userAgent); 
var iOS = iPhone || iPad; 
var mobile = iOS || android || webos; 

window.devicePixelRatio भौतिक पिक्सल और डिवाइस पर स्वतंत्र यंत्र पिक्सल (डुबकी) के बीच का अनुपात है। window.devicePixelRatio = भौतिक पिक्सेल/डुबकी।

अधिक जानकारी here

+1

@nhahtdh: ठीक है, कि iOS 5.0 उपयोगकर्ता एजेंट नहीं iPhone 5 याद रखें, iOS 5.0 iPhone 5 सहित किसी भी iOS डिवाइस पर चला सकते हैं, लेकिन मैं था उदाहरण के लिए एक आईफोन 4 और एक आईफोन 5 के बीच अंतर करना पसंद है। – fuzz

+0

@nhahtdh: आप टिप्पणी क्यों करेंगे और फिर बंद करने के लिए वोट देंगे? इसके अलावा, एक कारण देने की परवाह है? – fuzz

+0

यह सावधानीपूर्वक पढ़ने के बिना घुटने-झटके की प्रतिक्रिया थी जिसे आप पूछ रहे हैं। – nhahtdh

उत्तर

11

क्यों आप स्क्रीन वस्तु के आधार पर पता नहीं लगा -

screen.availWidth 
screen.availHeight 

अपने iPhone 5 पर यह 320 चौड़ाई और 548 ऊंचाई, एक गैर-रेटिना रूप में इसके संकल्प की रिपोर्ट।

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

+0

यह 568 है, 548 नहीं। – ForNeVeR

2

2 लाइनों पर्याप्त हैं:

var iphone4 = (window.screen.height == (960/2)); 
var iphone5 = (window.screen.height == (1136/2)); 
+0

आपको उपयोगकर्ता-एजेंट पहचान की भी आवश्यकता है। अकेले स्क्रीन आकार पर्याप्त नहीं है। –

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