दिलचस्प पोस्ट
एक थ्रेड से धागा आईडी प्राप्त करना एक अजगर MySQLDB खंड में उपयोग के लिए एक सूची imploding कई प्रतिबद्धों में पिछले प्रतिबद्ध को तोड़ना स्काला में प्रकार के लम्ब्दास क्या हैं और उनके लाभ क्या हैं? मैं HTML स्रोत को सी # में कैसे डाउनलोड कर सकता हूं क्यों। रैम फ़ाइल के साथ तैनात जब रिलेपथ () रिक्त रिटर्न मिलता है? कोनेबल 2 में डेलीपिप में लोकेल कैसे सेट करें? AddBusinessDays और GetBusinessDays Git: हटाए गए (रिमोट) शाखा पुनर्प्राप्त करें सी # टीसीपी क्लाइंट: सीरियल किए गए ऑब्जेक्ट्स को विभाजक का उपयोग करते हैं? स्कैनर विधि को चार अक्षर प्राप्त करने के लिए वस्तुओं और console.log के साथ अजीब व्यवहार जावा रेगेक्स: कैप्चरिंग समूह पुनरावृत्ति कई सेट कॉलम इकट्ठा करें जावास्क्रिप्ट में कब और क्यों लौट आए?

JQuery में एक मोबाइल डिवाइस का पता लगाने का सबसे अच्छा तरीका क्या है?

क्या पता लगाने का कोई ठोस तरीका है कि कोई उपयोगकर्ता jQuery में मोबाइल डिवाइस का उपयोग कर रहा है या नहीं? सीएसएस @ मीडिया विशेषता के समान कुछ है? अगर ब्राउज़र हाथ में डिवाइस पर है तो मैं एक अलग स्क्रिप्ट को चलाने के लिए चाहूंगा

JQuery के $.browser फ़ंक्शन नहीं है जो मैं देख रहा हूं।

वेब के समाधान से एकत्रित समाधान "JQuery में एक मोबाइल डिवाइस का पता लगाने का सबसे अच्छा तरीका क्या है?"

Jquery का उपयोग करने के बजाय आप इसका पता लगाने के लिए सरल जावास्क्रिप्ट का उपयोग कर सकते हैं:

 if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { // some code.. } 

या आप उन्हें दोनों के साथ जोड़ सकते हैं ताकि इसे jQuery के माध्यम से अधिक सुविधाजनक बनाया जा सके …

 $.browser.device = (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase())); 

अब $.browser उपरोक्त सभी उपकरणों के लिए "device" वापस करेगा

नोट: $.browser jQuery v1.9.1 पर हटा दिया। लेकिन आप इसे jQuery माइग्रेशन प्लगइन कोड का उपयोग कर का उपयोग कर सकते हैं


एक अधिक संपूर्ण संस्करण:

 var isMobile = false; //initiate as false // device detection if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|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/i.test(navigator.userAgent) || /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|\-[aw])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(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(navigator.userAgent.substr(0,4))) isMobile = true; 

मेरे लिए बहुत छोटा है इसलिए मैं इस तकनीक का उपयोग कर रहा हूं:

सीएसएस फ़ाइल में:

 /* Smartphones ----------- */ @media only screen and (max-width: 760px) { #some-element { display: none; } } 

JQuery / Javascript फ़ाइल में:

 $( document ).ready(function() { var is_mobile = false; if( $('#some-element').css('display')=='none') { is_mobile = true; } // now i can use is_mobile to run javascript conditionally if (is_mobile == true) { //Conditional script here } }); 

मेरा उद्देश्य था मेरी साइट "मोबाइल के अनुकूल है" इसलिए मैं सीएसएस मीडिया प्रश्नों का प्रयोग स्क्रीन आकार के आधार पर तत्वों को दिखाने / छिपाना करता हूं।

उदाहरण के लिए, मेरे मोबाइल संस्करण में मैं फेसबुक की तरह बॉक्स को सक्रिय नहीं करना चाहता, क्योंकि यह उन सभी प्रोफाइल छवियों और सामान को लोड करता है और यह मोबाइल आगंतुकों के लिए अच्छा नहीं है इसलिए, कंटेनर तत्व को छिपाने के अलावा, मैं यह भी jQuery कोड ब्लॉक (ऊपर) के अंदर करता हूं:

 if(!is_mobile) { (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/pt_PT/all.js#xfbml=1&appId=210731252294735"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); } 

आप इसे http://lisboaautentica.com पर कार्रवाई में देख सकते हैं

मैं अब भी मोबाइल संस्करण पर काम कर रहा हूं, इसलिए इसे अभी भी लिखना नहीं चाहिए जैसा कि यह लिखना है।

द्वारा अद्यतन

मीडिया का पता लगाने के लिए एक जावास्क्रिप्ट एपीआई बनाया गया है उपरोक्त समाधान का उपयोग करने के बजाय केवल निम्नलिखित का उपयोग करें:

 $( document ).ready(function() { var isMobile = window.matchMedia("only screen and (max-width: 760px)"); if (isMobile.matches) { //Conditional script here } }); 

ब्राउज़र समर्थन करता है: http://caniuse.com/#feat=matchmedia

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

मोज़िला के अनुसार – उपयोगकर्ता एजेंट का उपयोग करके ब्राउज़र का पता लगाना :

संक्षेप में, हम सुझाव देते हैं कि मोबाइल डिवाइस का पता लगाने के लिए प्रयोक्ता एजेंट में कहीं भी स्ट्रिंग "मोबी" की तलाश करें।

इस कदर:

 if (/Mobi/.test(navigator.userAgent)) { // mobile! } 

यह मोबाइल के मोज़िला, सफारी, आईई, ओपेरा, क्रोम आदि सहित सभी सामान्य मोबाइल ब्राउज़र उपयोगकर्ता एजेंटों से मेल खाएगा।

मोबाइल डिवाइस का पता लगाने के लिए आप जो कुछ कर रहे हैं, वह "ब्राउज़र सूँघने" की अवधारणा आईएमओ के पास बहुत करीब है। संभवतः कुछ सुविधा का पता लगाने में बेहतर होगा। http://www.modernizr.com/ जैसे पुस्तकालय उसमें मदद कर सकते हैं

उदाहरण के लिए, मोबाइल और गैर-मोबाइल के बीच की रेखा कहां है? यह हर दिन अधिक से अधिक धुंधला हो जाता है।

एक साधारण और प्रभावी एक-लाइनर:

 function isMobile() { return ('ontouchstart' in document.documentElement); } 

हालांकि कोड ऊपर टचस्क्रीन के साथ लैपटॉप के मामले को ध्यान में नहीं लेता है। इस प्रकार, मैं @ जूलियन समाधान के आधार पर, यह दूसरा संस्करण प्रदान करता हूं :

 function isMobile() { try{ document.createEvent("TouchEvent"); return true; } catch(e){ return false; } } 

यह jQuery नहीं है, लेकिन मुझे यह मिला: http://detectmobilebrowser.com/

यह कई भाषाओं में मोबाइल ब्राउज़र का पता लगाने के लिए स्क्रिप्ट प्रदान करता है, जिनमें से एक जावास्क्रिप्ट है। इससे आप जो भी खोज रहे हैं उसकी सहायता कर सकते हैं।

हालांकि, जब आप jQuery का उपयोग कर रहे हैं, तो आप jQuery.support संग्रह से अवगत होना चाहते हैं। मौजूदा ब्राउज़र की क्षमताओं का पता लगाने के लिए यह गुणों का एक संग्रह है। दस्तावेज़ीकरण यहां है: http://api.jquery.com/jQuery.support/

चूंकि मुझे नहीं पता कि आप क्या पूरा करने की कोशिश कर रहे हैं, मुझे नहीं पता है इनमें से कौन सा सबसे उपयोगी होगा।

कहा जा रहा है कि सभी, मुझे लगता है तुम्हारा सबसे अच्छा शर्त है या तो एक सर्वर स्तरीय भाषा (अगर यह एक विकल्प है) का उपयोग कर उत्पादन में एक अलग स्क्रिप्ट को पुनर्निर्देशित या लिखना है चूंकि आप वास्तव में किसी मोबाइल ब्राउज़र की क्षमताओं को नहीं जानते हैं, क्योंकि सर्वर पक्ष पर पता लगाने और बदलाव तर्क सबसे विश्वसनीय तरीका होगा। बेशक, यदि आप किसी सर्वर साइड भाषा का उपयोग नहीं कर सकते तो यह सब एक विवादास्पद मुद्दा है 🙂

कभी-कभी यह जानने के लिए वांछित है कि क्लाइंट द्वारा उस डिवाइस के लिए विशिष्ट सामग्री दिखाने के लिए कौन सी ब्रांड डिवाइस उपयोग कर रहा है, जैसे कि iPhone स्टोर या एंड्रॉइड मार्केट के लिए लिंक। आधुनिक निर्माता महान है, लेकिन केवल ब्राउज़र क्षमताओं को दिखाता है, जैसे कि HTML5 या फ़्लैश

प्रत्येक डिवाइस प्रकार के लिए एक अलग वर्ग प्रदर्शित करने के लिए यहां jQuery में मेरा UserAgent समाधान है:

 /*** sniff the UA of the client and show hidden div's for that device ***/ var customizeForDevice = function(){ var ua = navigator.userAgent; var checker = { iphone: ua.match(/(iPhone|iPod|iPad)/), blackberry: ua.match(/BlackBerry/), android: ua.match(/Android/) }; if (checker.android){ $('.android-only').show(); } else if (checker.iphone){ $('.idevice-only').show(); } else if (checker.blackberry){ $('.berry-only').show(); } else { $('.unknown-device').show(); } } 

यह समाधान ग्राफ़िक्स पुरूषों से है http://graphicmaniacs.com/note/detecting-iphone-ipod-ipad-android-and-blackberry-browser-with-javascript-and-php/

में एक समाधान मिला: http://www.abeautifulsite.net/blog/2011/11/detecting-mobile-devices-with-javascript/

 var isMobile = { Android: function() { return navigator.userAgent.match(/Android/i); }, BlackBerry: function() { return navigator.userAgent.match(/BlackBerry/i); }, iOS: function() { return navigator.userAgent.match(/iPhone|iPad|iPod/i); }, Opera: function() { return navigator.userAgent.match(/Opera Mini/i); }, Windows: function() { return navigator.userAgent.match(/IEMobile/i); }, any: function() { return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); } }; 

और फिर यह सत्यापित करने के लिए कि क्या यह एक मोबाइल है, तो आप इसका उपयोग कर परीक्षण कर सकते हैं:

 if(isMobile.any()) { //some code... } 

यदि "मोबाइल" से आप "छोटी स्क्रीन" का मतलब है, तो मैं इसका उपयोग करता हूं:

 var windowWidth = window.screen.width < window.outerWidth ? window.screen.width : window.outerWidth; var mobile = windowWidth < 500; 

आईफोन पर आप 320 के एक window.screen.width के साथ समाप्त हो जाएंगे। एंड्रॉइड पर आप एक विंडो के साथ समाप्त होंगे.ऊटर 480 की (हालांकि यह एंड्रॉइड पर निर्भर कर सकता है) आईपैड और एंड्रॉइड टैबलेट 768 जैसी संख्याएं वापस करेंगे, ताकि आप चाहते हैं कि आपके पास पूर्ण दृश्य मिले।

यदि आप मॉडर्नर्जर का उपयोग करते हैं, तो पहले उल्लेख के अनुसार, Modernizr.touch का उपयोग करना बहुत आसान है।

हालांकि, मैं सिर्फ सुरक्षित होने के लिए, Modernizr.touch और उपयोगकर्ता एजेंट परीक्षण के संयोजन का उपयोग करना पसंद करता हूं।

 var deviceAgent = navigator.userAgent.toLowerCase(); var isTouchDevice = Modernizr.touch || (deviceAgent.match(/(iphone|ipod|ipad)/) || deviceAgent.match(/(android)/) || deviceAgent.match(/(iemobile)/) || deviceAgent.match(/iphone/i) || deviceAgent.match(/ipad/i) || deviceAgent.match(/ipod/i) || deviceAgent.match(/blackberry/i) || deviceAgent.match(/bada/i)); if (isTouchDevice) { //Do something touchy } else { //Can't touch this } 

यदि आप ('ontouchstart' in document.documentElement) उपयोग नहीं करते हैं, तो आप इसके साथ ही above Modernizr.touch फ़ंक्शन को प्रतिस्थापित कर सकते हैं ('ontouchstart' in document.documentElement)

यह भी ध्यान रखें कि उपयोगकर्ता एजेंट iemobile परीक्षण आपको Windows Phone तुलना में खोजा गया माइक्रोसॉफ्ट मोबाइल उपकरणों की व्यापक रेंज देगा।

इसके अलावा इस सवाल का भी देखें

यदि आप विशेष रूप से छोटे प्रदर्शन के बारे में चिंतित नहीं हैं, तो आप चौड़ाई / ऊंचाई का पता लगा सकते हैं। तो इस तरह अगर चौड़ाई एक निश्चित आकार के तहत हो, तो मोबाइल साइट को फेंक दिया जाता है। यह सही तरीके से नहीं हो सकता है, लेकिन यह कई डिवाइसों के लिए शायद सबसे आसानी से पता लगाएगा। आपको आईफोन 4 (बड़े रिज़ॉल्यूशन) के लिए एक विशेष रूप से लगाया जा सकता है।

जावास्क्रिप्ट की एक पंक्ति में:

 var isMobile = ('ontouchstart' in document.documentElement && navigator.userAgent.match(/Mobi/)); 

यदि उपयोगकर्ता एजेंट में 'मोबी' (एमडीएन के अनुसार) और ऑटचर्च उपलब्ध है, तो यह एक मोबाइल डिवाइस होने की संभावना है।

आप नेविगेटर पर भरोसा नहीं कर सकते। यूजर एगेंट नहीं, हर डिवाइस अपने वास्तविक ओएस को दर्शाता है। उदाहरण के लिए मेरे एचटीसी पर, यह सेटिंग्स पर निर्भर करता है ("मोबाइल संस्करण का उपयोग करके" चालू / बंद)। http://my.clockodo.com पर , हम केवल छोटे उपकरणों का पता लगाने के लिए screen.width का उपयोग करते थे। दुर्भाग्य से, कुछ एंड्रॉइड संस्करणों में स्क्रीन के साथ एक बग है। चौड़ाई आप उपयोगकर्ता एगेंट के साथ इस तरह से गठबंधन कर सकते हैं:

 if(screen.width < 500 || navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i)) { alert("This is a mobile device"); } 

मुझे हैरानी है कि कोई भी एक अच्छी साइट की ओर इशारा करता नहीं है: http://detectmobilebrowsers.com/ यह मोबाइल पता लगाने के लिए विभिन्न भाषाओं में तैयार किए गए कोड हैं। और अगर आपको गोलियां भी पता लगाना है, तो बस अतिरिक्त रेगेक्स पैरामीटर के बारे में अनुभाग देखें।

मुझे पता है कि इस प्रश्न के बहुत सारे उत्तर हैं, लेकिन मैंने जो भी जवाब नहीं दिया उससे जिस तरह से मैं इसे हल करता हूं

सीएसएस width (मीडिया क्वेरीज़) चौड़ाई पर आधारित वेब दस्तावेज़ पर लागू की जाने वाली शैली निर्धारित करने के लिए उपयोग करता है जावास्क्रिप्ट में चौड़ाई क्यों नहीं?

उदाहरण के लिए बूटस्ट्रैप (मोबाइल फर्स्ट) मीडिया क्वेरीज़ में, 4 स्नैप / ब्रेक पॉइंट मौजूद हैं:

  • अतिरिक्त छोटे डिवाइस 768 पिक्सल और नीचे हैं
  • लघु डिवाइस 768 से 991 पिक्सल तक हैं
  • मध्यम उपकरण 992 से लेकर 11 99 पिक्सल तक हैं
  • बड़े डिवाइस 1200 पिक्सल और ऊपर हैं

हम इसका इस्तेमाल अपने जावास्क्रिप्ट मुद्दे को हल करने के लिए भी कर सकते हैं।

पहले हम एक ऐसा फ़ंक्शन बनायेंगे जो विंडो का आकार प्राप्त कर लेते हैं और एक मूल्य देता है जो हमें यह देखने में मदद करता है कि आकार डिवाइस हमारे आवेदन को कैसे देख रहा है:

 var getBrowserWidth = function(){ if(window.innerWidth < 768){ // Extra Small Device return "xs"; } else if(window.innerWidth < 991){ // Small Device return "sm" } else if(window.innerWidth < 1199){ // Medium Device return "md" } else { // Large Device return "lg" } }; 

अब जब कि हमारे पास फ़ंक्शन की स्थापना है, तो हम इसे कॉल मान को स्टोर कर सकते हैं:

 var device = getBrowserWidth(); 

आपका सवाल था

अगर ब्राउज़र हाथ में डिवाइस पर है तो मैं एक अलग स्क्रिप्ट को चलाने के लिए चाहूंगा

अब जब हमारे पास डिवाइस की जानकारी है, तो वह बचे हुए है I बयान है:

 if(device === "xs"){ // Enter your script for handheld devices here } 

यहां कोडपेन पर एक उदाहरण है: http://codepen.io/jacob-king/pen/jWEeWG

यह एक ऐसा फ़ंक्शन है जिसका उपयोग आप किसी मोबाइल ब्राउज़र पर चल रहे हैं या नहीं, इस बारे में सही / गलत उत्तर प्राप्त करने के लिए उपयोग कर सकते हैं। हां, यह ब्राउज़र-सूँघने वाला है, लेकिन कभी-कभी ये वास्तव में आपकी ज़रूरत है।

 function is_mobile() { var agents = ['android', 'webos', 'iphone', 'ipad', 'blackberry']; for(i in agents) { if(navigator.userAgent.match('/'+agents[i]+'/i')) { return true; } } return false; } 

इस पोस्ट को देखें , यह वास्तव में अच्छा कोड स्निपेट देता है कि क्या करना है जब स्पर्श डिवाइस का पता लगाया जाए या क्या करना चाहिए, यदि टचस्टार्ट ईवेंट कहा जाता है:

 $(function(){ if(window.Touch) { touch_detect.auto_detected(); } else { document.ontouchstart = touch_detect.surface; } }); // End loaded jQuery var touch_detect = { auto_detected: function(event){ /* add everything you want to do onLoad here (eg. activating hover controls) */ alert('this was auto detected'); activateTouchArea(); }, surface: function(event){ /* add everything you want to do ontouchstart here (eg. drag & drop) - you can fire this in both places */ alert('this was detected by touching'); activateTouchArea(); } }; // touch_detect function activateTouchArea(){ /* make sure our screen doesn't scroll when we move the "touchable area" */ var element = document.getElementById('element_id'); element.addEventListener("touchstart", touchStart, false); } function touchStart(event) { /* modularize preventing the default behavior so we can use it again */ event.preventDefault(); } 

मैं आपको http://wurfl.io/ की जांच करने की सलाह देता हूं

संक्षेप में, यदि आप एक छोटी जेएस फ़ाइल आयात करते हैं:

 <script type='text/javascript' src="//wurfl.io/wurfl.js"></script> 

आपको JSON ऑब्जेक्ट के साथ छोड़ दिया जाएगा जो ऐसा दिखता है:

 { "complete_device_name":"Google Nexus 7", "is_mobile":true, "form_factor":"Tablet" } 

(यह मानते हुए कि आप निश्चित रूप से एक नेक्सस 7 का उपयोग कर रहे हैं) और आप इस तरह से काम करने में सक्षम होंगे:

 if(WURFL.is_mobile) { //dostuff(); } 

यह वह है जो आप के लिए देख रहे हैं।

अस्वीकरण: मैं उस कंपनी के लिए काम करता हूं जो इस मुफ्त सेवा प्रदान करती है। धन्यवाद।

मैं तारों के निम्न कॉम्बो का उपयोग करने के लिए सुझाव दे रहा हूं, यह देखने के लिए कि डिवाइस प्रकार का उपयोग किया जा रहा है या नहीं।

मोज़िला दस्तावेज स्ट्रिंग Mobi की सिफारिश के अनुसार लेकिन, पुरानी गोलियों में से कुछ सच ही नहीं लौटाते हैं यदि केवल Mobi का उपयोग किया जाता है, इसलिए हमें Tablet स्ट्रिंग का भी इस्तेमाल करना चाहिए।

इसी तरह, iPad और iPhone तारों के सुरक्षित पक्ष में रहने के लिए भी डिवाइस प्रकार की जांच के लिए इस्तेमाल किया जा सकता है।

Mobi स्ट्रिंग के लिए अकेले ही अधिकांश नए डिवाइस true होंगे

 if (/Mobi|Tablet|iPad|iPhone/.test(navigator.userAgent)) { // do something } 

महान धन्यवाद धन्यवाद विंडोज फोन और ज़्यून का समर्थन करने के लिए छोटे सुधार:

  if (navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/) || navigator.userAgent.match(/Windows Phone/i) || navigator.userAgent.match(/ZuneWP7/i) ) { // some code self.location="top.htm"; } 

इसे इस्तेमाल करो:

 /** * jQuery.browser.mobile (http://detectmobilebrowser.com/) * jQuery.browser.mobile will be true if the browser is a mobile device **/ (function(a){jQuery.browser.mobile=/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/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|e\-|e\/|\-[aw])|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|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera); 

फिर इसका उपयोग करें:

 if(jQuery.browser.mobile) {  console.log('You are using a mobile device!'); } else {  console.log('You are not using a mobile device!'); } 

http://detectmobilebrowser.com/ पर आधारित सरल फ़ंक्शन

 function isMobile() { var a = navigator.userAgent||navigator.vendor||window.opera; return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|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/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|\-[aw])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(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)); } 

All answers use user-agent to detect the browser but device detection based on user-agent is not very good solution, better is to detect features like touch device (in new jQuery they remove $.browser and use $.support instead).

To detect mobile you can check for touch events:

 function is_touch_device() { return 'ontouchstart' in window // works on most browsers || 'onmsgesturechange' in window; // works on ie10 } 

Taken from What's the best way to detect a 'touch screen' device using JavaScript?

How about mobiledetect.net ?

Other solutions seem too basic. This is a lightweight PHP class. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment. You can also benefit from Mobile Detect by using any of the 3rd party plugins available for: WordPress, Drupal, Joomla, Magento, etc.

Knowing that TouchEvent is only for mobile devices, Maybe the simplest way could be check if user device can support it:

 function isMobile() { try { document.createEvent("TouchEvent"); return true; } catch(e) { return false; } } 

You could also use server side script and set javascript variables from it.

Example in php

download http://code.google.com/p/php-mobile-detect/ and then set javascript variables.

 <script> //set defaults var device_type = 'desktop'; </script> <?php require_once( 'Mobile_Detect.php'); $detect = new Mobile_Detect(); ?> <script> device_type="<?php echo ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'mobile') : 'desktop'); ?>"; alert( device_type); </script> 

You can also detect it like bellow

 $.isIPhone = function(){ return ((navigator.platform.indexOf("iPhone") != -1) || (navigator.platform.indexOf("iPod") != -1)); }; $.isIPad = function (){ return (navigator.platform.indexOf("iPad") != -1); }; $.isAndroidMobile = function(){ var ua = navigator.userAgent.toLowerCase(); return ua.indexOf("android") > -1 && ua.indexOf("mobile"); }; $.isAndroidTablet = function(){ var ua = navigator.userAgent.toLowerCase(); return ua.indexOf("android") > -1 && !(ua.indexOf("mobile")); }; 

User agent strings should not be trusted alone. Solution below will work in all situations.

 function isMobile(a) { return (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|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|xda|xiino/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|\-[aw])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(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))); } 

and call this function:

 isMobile(navigator.userAgent || navigator.vendor || window.opera) 

To add an extra layer of control I use the HTML5 storage to detect if it is using mobile storage or desktop storage. If the browser does not support storage I have an array of mobile browser names and I compare the user agent with the browsers in the array.

It is pretty simple. Here is the function:

 // Used to detect whether the users browser is an mobile browser function isMobile() { ///<summary>Detecting whether the browser is a mobile browser or desktop browser</summary> ///<returns>A boolean value indicating whether the browser is a mobile browser or not</returns> if (sessionStorage.desktop) // desktop storage return false; else if (localStorage.mobile) // mobile storage return true; // alternative mobile = ['iphone','ipad','android','blackberry','nokia','opera mini','windows mobile','windows phone','iemobile','tablet','mobi']; var ua=navigator.userAgent.toLowerCase(); for (var i in mobile) if (ua.indexOf(mobile[i]) > -1) return true; // nothing found.. assume desktop return false; } 

This is my code i'm using in my projects:

 function isMobile() { try { if(/Android|webOS|iPhone|iPad|iPod|pocket|psp|kindle|avantgo|blazer|midori|Tablet|Palm|maemo|plucker|phone|BlackBerry|symbian|IEMobile|mobile|ZuneWP7|Windows Phone|Opera Mini/i.test(navigator.userAgent)) { return true; }; return false; } catch(e){ console.log("Error in isMobile"); return false; } }