JQuery का उपयोग कर iPad उपयोगकर्ताओं का पता लगाएं?


167

क्या यह पता लगाने का कोई तरीका है कि क्या वर्तमान उपयोगकर्ता jQuery / JavaScript का उपयोग करके iPad का उपयोग कर रहा है?

जवाबों:


317

आईपैड का पता लगाना

आपको userAgentसंपत्ति पर एक नज़र डालकर एक iPad उपयोगकर्ता का पता लगाने में सक्षम होना चाहिए :

var is_iPad = navigator.userAgent.match(/iPad/i) != null;

iPhone / iPod डिटेक्शन

इसी तरह, platformआईफ़ोन या आईपॉड जैसे उपकरणों की जाँच करने की संपत्ति:

function is_iPhone_or_iPod(){
     return navigator.platform.match(/i(Phone|Pod))/i)
}

टिप्पणियाँ

जब यह काम करता है, तो आपको आम तौर पर ब्राउज़र-विशिष्ट पहचान करने से बचना चाहिए क्योंकि यह अक्सर अविश्वसनीय हो सकता है (और खराब हो सकता है)। यह ज्यादातर मामलों में वास्तविक फीचर-डिटेक्शन का उपयोग करने के लिए पसंद किया जाता है, जिसे मॉर्डनिजर जैसी लाइब्रेरी के माध्यम से किया जा सकता है

जैसा कि ब्रेनन के जवाब में बताया गया है , फेसबुक ऐप के भीतर यह पता लगाने पर समस्या उत्पन्न हो सकती है। कृपया इस परिदृश्य को संभालने के लिए उसका उत्तर देखें।

संबंधित संसाधन


9
हाहा, आप jQuery के दृष्टिकोण और जावास्क्रिप्ट दृष्टिकोण के बीच अंतर कर रहे हैं?
हरमन

4
यह 2 अंगूठे नीचे क्यों है?
रॉकेट हज़मत

3
क्या समर्थन कार्यों के आधार पर, इसका पता लगाने का एक तरीका है, ताकि नाविक उपयोगकर्ता एजेंट का उपयोग न करें?
अल्बानक्स

6
एक टाइपो (आइपॉड के बजाय आईपैड होना चाहिए) "एक" नहीं "ओ"।
सतीश

4
धन्यवाद सतीश - मेरा इरादा उस सेक्शन को आईपॉड के लिए करना था। मैंने इसे मूल प्रश्न के स्पर्शरेखा के रूप में शामिल किया।
रियोन विलियम्स

22

हालांकि स्वीकार किए जाते हैं समाधान iPhones के लिए सही है, तो इसे गलत तरीके से दोनों घोषणा करेंगे isiPhoneऔर isiPadउन फेसबुक app से उनके आईपैड पर अपनी साइट पर जाकर के लिए सच हो।

पारंपरिक ज्ञान यह है कि iOS उपकरणों में सफारी के लिए एक उपयोगकर्ता एजेंट और UIWebView के लिए एक उपयोगकर्ता एजेंट होता है। यह धारणा गलत है क्योंकि iOS ऐप अपने यूजर एजेंट को कस्टमाइज़ और कर सकते हैं। यहां का मुख्य अपराधी फेसबुक है।

IOS उपकरणों से इन उपयोगकर्ता एजेंट स्ट्रिंग्स की तुलना करें:

# iOS Safari
iPad: Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3
iPhone: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3

# UIWebView
iPad: Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/98176
iPhone: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Mobile/8B117

# Facebook UIWebView
iPad: Mozilla/5.0 (iPad; U; CPU iPhone OS 5_1_1 like Mac OS X; en_US) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.1.1;FBBV/4110.0;FBDV/iPad2,1;FBMD/iPad;FBSN/iPhone OS;FBSV/5.1.1;FBSS/1; FBCR/;FBID/tablet;FBLC/en_US;FBSF/1.0]
iPhone: Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; ru_RU) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.1;FBBV/4100.0;FBDV/iPhone3,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/5.1.1;FBSS/2; tablet;FBLC/en_US]

ध्यान दें कि iPad पर, Facebook UIWebView के उपयोगकर्ता एजेंट स्ट्रिंग में 'iPhone' शामिल है।

जावास्क्रिप्ट में iPhone / iPad की पहचान करने का पुराना तरीका:

IS_IPAD = navigator.userAgent.match(/iPad/i) != null;
IS_IPHONE = navigator.userAgent.match(/iPhone/i) != null) || (navigator.userAgent.match(/iPod/i) != null);

यदि आप iPhone और iPad का पता लगाने के लिए इस दृष्टिकोण के साथ जाने वाले थे, तो आप IS_IPHONE और IS_IPAD दोनों के साथ समाप्त हो जाएंगे यदि कोई उपयोगकर्ता iPad पर फेसबुक से आता है। यह कुछ अजीब व्यवहार पैदा कर सकता है!

जावास्क्रिप्ट में iPhone / iPad की पहचान करने का सही तरीका:

IS_IPAD = navigator.userAgent.match(/iPad/i) != null;
IS_IPHONE = (navigator.userAgent.match(/iPhone/i) != null) || (navigator.userAgent.match(/iPod/i) != null);
if (IS_IPAD) {
  IS_IPHONE = false;
}

हम विचित्र फेसबुक UIWebView iPad उपयोगकर्ता एजेंट के लिए कवर करने के लिए iPads पर IS_IPHONE को झूठा घोषित करते हैं। यह एक उदाहरण है कि उपयोगकर्ता एजेंट को कैसे सूँघना अविश्वसनीय है। जितने अधिक iOS ऐप अपने उपयोगकर्ता एजेंट को कस्टमाइज़ करते हैं, उतने ही अधिक उपयोगकर्ता एजेंट को सूँघते हैं। यदि आप उपयोगकर्ता एजेंट को सूँघने से रोक सकते हैं (संकेत: CSS मीडिया प्रश्न), DO IT।


1
आप अपने iPhone / iPod को एक ही regex में मेल कर सकते हैं जैसे /iPh?o(ne|d)/i, या /(iPhone|iPod)/iयदि आप एक iPhod जारी होने के बारे में हैं: P।
लॉबी

9

मैं इसका उपयोग करता हूं:

function fnIsAppleMobile() 
{
    if (navigator && navigator.userAgent && navigator.userAgent != null) 
    {
        var strUserAgent = navigator.userAgent.toLowerCase();
        var arrMatches = strUserAgent.match(/(iphone|ipod|ipad)/);
        if (arrMatches != null) 
             return true;
    } // End if (navigator && navigator.userAgent) 

    return false;
} // End Function fnIsAppleMobile


var bIsAppleMobile = fnIsAppleMobile(); // TODO: Write complaint to CrApple asking them why they don't update SquirrelFish with bugfixes, then remove

थैंक्स यह वही था जो मैं देख रहा था।
techie_28

यह डेस्कटॉप पर विफल रहता है क्योंकि अगर यह सामग्री शून्य के साथ कुछ भी रिटर्न ऑब्जेक्ट नहीं पा सकता है, तो मैंने दूसरी शर्त को संशोधित किया और ठीक काम करता है: अगर (arrMatches! = Null) {वापसी सच है; }
जो एल

8

मैं इसका उपयोग करता हूं:

//http://detectmobilebrowsers.com/ + tablets
(function(a) {
    if(/android|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(ad|hone|od)|iris|kindle|lge |maemo|meego.+mobile|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|playbook|silk/i.test(a)
    ||
    /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))
    {
        window.location="yourNewIndex.html"
    }
})(navigator.userAgent||navigator.vendor||window.opera);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.