Kas yra geriausias būdas atrasti mobilųjį įrenginį „jQuery“?

Ar yra sunku nustatyti, ar naudotojas naudoja jQuery mobilųjį įrenginį? Kažkas panašaus į CSS @ media atributą? Norėčiau paleisti kitą scenarijų, jei naršyklė yra kišenėje.

„JQuery $.browser ne tai, ko ieškau.

1443
18 авг. nustatyti superUntitled 18 rug . 2010-08-18 20:22 '10, 08:22 PM 2010-08-18 20:22
@ 54 atsakymai
  • 1
  • 2

Vietoj „jQuery“ galite naudoti paprastą „JavaScript“, kad ją aptiktumėte:

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

Arba galite juos sujungti, kad jis taptų prieinamas per jQuery ...

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

Dabar $.browser grąžins "device" visiems pirmiau minėtiems įrenginiams.

Pastaba: $.browser .browser pašalinamas jQuery v1.9.1 . Bet jūs galite jį naudoti naudodami jQuery migracijos įskiepį. Kodas


Išsamesnė versija:

 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; } 
1829 m
22 авг. Atsakymą pateikia saldainiai-BlingBling 22 rug . 2010-08-22 08:26 '10 8:26 val. 2010-08-22 08:26

Man šiek tiek gražus, todėl naudoju šį metodą:

CSS faile:

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

„JQuery / JavaScript“ faile:

 $( 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 } }); 

Mano tikslas buvo padaryti savo svetainę „mobiliuoju“. Todėl naudoju CSS medijos užklausas elementams rodyti / slėpti, priklausomai nuo ekrano dydžio.

Pavyzdžiui, savo mobiliajame variante nenoriu aktyvuoti „Facebook“ panašaus >

 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 fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); } 

Jį galite pamatyti veikdami adresu http://lisboaautentica.com

Aš vis dar dirbau mobilioje versijoje, todėl ji vis dar nerodo, kaip ji turėtų būti šio rašymo metu.

Atnaujinimas iš dekin88

Multimedijos įterptųjų „JavaScript“ API aptikimui. Užuot naudoję pirmiau pateiktą sprendimą, tiesiog naudokite šiuos veiksmus:

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

Naršyklės palaikymas: http://caniuse.com/#feat=matchmedia

Šio metodo pranašumas yra tai, kad jis yra ne tik paprastesnis ir trumpesnis, bet, jei reikia, gali būti nukreiptas į skirtingus įrenginius, pvz., Išmaniuosius telefonus ir planšetinius kompiuterius, jei reikia, atskirai nenaudojant jokių manekeno elementų.

443
28 апр. Gonçalo Peres atsakymas, pateiktas balandžio 28 d 2012-04-28 17:52 '12, 5:52 val. 2012-04-28 17:52

Pagal „ Mozilla“ naršyklės atradimą naudojant naudotojo agentą :

Todėl rekomenduojame ieškoti eilutės „Mobi“ bet kurioje vartotojo agento vietoje, kad aptiktų mobilųjį įrenginį.

Patinka tai:

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

Tai atitiks visus įprastus mobiliųjų naršyklių naudotojus, įskaitant mobilųjį „Mozilla“, „Safari“, „IE“, „Opera“, „Chrome“ ir kt.

„Android“ naujinimas

„EricL“ rekomenduoja išbandyti „ Android kaip naudotojo agentą, nes „ Chrome“ naudotojo agentas tablečių eilutėje neturi „Mobi“ (tačiau telefono versijos):

 if (/Mobi|Android/i.test(navigator.userAgent)) { // mobile! } 
199
07 июля '14 в 0:46 2014-07-07 00:46 atsakymas pateikiamas QuasarDonkey liepos 7 d. 14 d. 0:46 2014-07-07 00:46

Paprasta ir efektyvi viena eilutė:

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

Tačiau pirmiau minėtas kodas neatsižvelgia į nešiojamųjų kompiuterių su jutikliniu ekranu atvejį. Taigi, pateikiu šią antrąją versiją pagal @Julian sprendimą :

 function isMobile() { try{ document.createEvent("TouchEvent"); return true; } catch(e){ return false; } } 
79
30 нояб. Atsakymas pateikiamas sequielo . 2013-11-30 00:14 '13 prie 0:14 2013-11-30 00:14

Ką jūs darote, norėdami atrasti mobilųjį įrenginį, yra pernelyg artimas IMO naršyklės koncepcijai. Tikriausiai būtų daug geriau atlikti kai kurias aptikimo funkcijas. Tai gali padėti bibliotekos, pvz., Http://www.modernizr.com/ .

Pavyzdžiui, kur yra linija tarp mobiliojo ir nejudančio? Jis tampa vis labiau neryškus kiekvieną dieną.

76
18 авг. Atsakymas duotas Bart 18 rug. 2010-08-18 21:21 '10, 21:21, 2010-08-18 21:21

Tai ne „jQuery“, bet tai buvo: http://detectmobilebrowser.com/

Ji suteikia scenarijus, skirtus aptikti mobilias naršykles keliomis kalbomis, iš kurių viena yra „JavaScript“. Tai gali padėti jums ieškoti.

Tačiau, kadangi naudojate jQuery, galite žinoti apie jQuery.support kolekciją. Tai savybių rinkinys, skirtas aptikti dabartinės naršyklės galimybes. Dokumentacija yra čia: http://api.jquery.com/jQuery.support/

Kadangi nežinau, ką tiksliai bandote atlikti, nežinau, kuris iš jų bus naudingiausias.

Viskas, kas man atrodo, manau, kad jūsų geriausias pasirinkimas yra nukreipti arba parašyti kitą scenarijų išvesties naudojant serverio kalbą (jei tai yra galimybė). Kadangi tikrai nežinote mobiliojo naršyklės x galimybių, patikimiausias būdas bus paleisti serverio pusės aptikimo ir keitimo algoritmą. Žinoma, visa tai yra prieštaringas klausimas, jei negalite naudoti serverio kalbos :)

61
18 авг. atsakymas duotas Ender 18 rug. 2010-08-18 21:02 '10 ne 21:02 2010-08-18 21:02

Kartais pageidautina išsiaiškinti, kurį prekės ženklo įrenginį klientas naudoja tam prietaisui būdingo turinio rodymui, pvz., Nuorodą į „iPhone“ parduotuvę arba „Android“ rinką. Modernizatorius yra puikus, tačiau rodo tik naršyklės galimybes, pvz., HTML5 arba „Flash“.

Čia yra mano vartotojoAgent sprendimas jQuery, kad būtų rodoma kita klasė kiekvienam įrenginio tipui:

  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(); } } 

Šis sprendimas yra iš „Graphics Maniacs“ http://graphicmaniacs.com/note/detecting-iphone-ipod-ipad-android-and-blackberry-browser-with-javascript-and-php/

46
09 июня '11 в 21:26 2011-06-09 21:26 atsakymas duotas groomsabs birželio 09 '11, 21:26 2011-06-09 21:26

Rastas sprendimas: 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()); } }; 

Tada, norėdami patikrinti, ar „Mobile“ yra, galite patikrinti naudodami:

 if(isMobile.any()) { //some code... } 
42
21 нояб. atsakymą pateikė Gabriel 21 lapkričio. 2012-11-21 16:03 '12, 00:05 PM 2012-11-21 16:03

Jei mobiliuoju telefonu kalbate apie mažą ekraną, naudoju tai:

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

„IPhone“ turėsite >

21
11 мая '12 в 21:42 2012-05-11 21:42 Atsakymą pateikė Chris Moschini gegužės 12 d., 12 val. 21:42 2012-05-11 21:42

Jei naudojate „ Modernizr“ , tai labai lengva naudoti „ Modernizr.touch , kaip minėta anksčiau.

Tačiau aš norėčiau naudoti „ Modernizr.touch ir naudotojo agento testų derinį, kad būtų saugus.

 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 } 

Jei nenaudojate „Modernizr“, galite paprasčiausiai pakeisti „ Modernizr.touch funkciją aukščiau su ('ontouchstart' in document.documentElement)

Taip pat atkreipkite dėmesį, kad bandant naudotojo naudotojo agentą, galėsite aptikti daugiau „Microsoft“ mobiliųjų įrenginių nei „ Windows Phone .

Taip pat žr. Šį klausimą

15
26 июня '13 в 20:15 2013-06-26 20:15 atsakymą PeterPan pateikė birželio 26 d. 13 d. 20:15 2013-06-26 20:15

Žinau, kad yra daug atsakymų į šį klausimą, tačiau, ką matiau, niekas nesiekia atsakymo, kaip nusprendžiau.

CSS naudoja plotį (žiniasklaidos užklausas), kad nustatytų, kurie stiliai taikomi interneto dokumentui pagal plotį. Kodėl ne naudoti plotį javascript?

Pvz., „Bootstrap“ („Mobile First“) žiniasklaidos užklausose yra 4 tvirtinimo / pertraukimo taškai:

  • Ypač mažuose įrenginiuose yra 768 pikseliai ir mažesni.
  • Maži prietaisai svyruoja nuo 768 iki 991 taškų.
  • Vidutiniai prietaisai svyruoja nuo 992 iki 1199 pikselių.
  • Dideli 1200 pikselių ir daugiau įrenginiai.

Taip pat galime tai panaudoti norėdami išspręsti mūsų „JavaScript“ problemą.

Pirma, sukursime funkciją, kuri gauna >

 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" } }; 

Dabar, kai nustatėme funkciją, galime jį skambinti ir išsaugoti:

 var device = getBrowserWidth(); 

Jūsų klausimas buvo

Norėčiau paleisti kitą scenarijų, jei naršyklė yra nešiojamame įrenginyje.

Dabar, kai mes turime informaciją apie įrenginį, tik jei lieka pareiškimas:

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

Štai CodePen pavyzdys: http://codepen.io/jacob-king/pen/jWEeWG

13
08 дек. Jacob King atsakymas gruodžio 08 2015-12-08 20:54 '15 ne 20:54 2015-12-08 20:54

Jei nesate ypač susirūpinę dėl mažų ekranų, galite naudoti plotį ir aukštį. Taigi, jei plotis yra mažesnis už tam tikrą dydį, mobilioji svetainė išeina. Tai gali būti ne idealus būdas, tačiau tikriausiai bus lengviau aptikti kelis įrenginius. Jums gali reikėti nurodyti konkrečią parinktį „iPhone 4“ (didelė raiška).

11
18 авг. Atsakymas pateikiamas MoDFoX 18 rug . 2010-08-18 22:46 '10, 10:46, 2010-08-18 22:46

Vienoje eilutėje javascript:

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

Jei naudotojo agente yra „Mobi“ (pagal MDN) ir ji yra prieinama, tai greičiausiai bus mobilusis įrenginys.

11
28 сент. James Westgate atsakymas, rugsėjo 28 d 2015-09-28 16:54 '15 at 16:54 2015-09-28 16:54

Nustebau, kad niekas nepaminėjo geros svetainės: http://detectmobilebrowsers.com/ Jis turi paruoštą kodą skirtingomis kalbomis mobiliesiems įrenginiams aptikti (įskaitant, bet neapsiribojant):

  • apache
  • Asp
  • Su #
  • IIS
  • „Javascript“
  • Nginx
  • Php
  • Perl
  • pythonas
  • Bėgiai

Ir jei jums taip pat reikia aptikti tabletes, tiesiog pažymėkite skyrių „Apie“ papildomam parametrams RegEx.

„Android“ tabletės, „iPad“, „Kindle Fires“ ir „PlayBook“ nėra apibrėžtos pagal dizainą. Norėdami pridėti paramą tabletėms, pridėkite |android|ipad|playbook|silk į pirmą reguliarią išraišką.

11
08 окт. atsakymą pateikė Maksim Luzik 08 okt. 2013-10-08 15:05 '13, 15:05, 2013-10-08 15:05

Jūs negalite pasikliauti navigator.userAgent , ne kiekvienas įrenginys rodo tikrąją OS. Pavyzdžiui, mano HTC, tai priklauso nuo nustatymų („naudokitės mobilia versija“ įjungta / išjungta). Http://my.clockodo.com mes tiesiog naudojome screen.width kad aptiktų mažus įrenginius. Deja, kai kuriose „Android“ versijose yra klaida. Šį kelią galite sujungti su userAgent:

 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"); } 
11
08 июля '11 в 13:10 2011-07-08 13:10 Atsakymą pateikė Ben H , liepos 8 d. 11 d., 13:10 2011-07-08 13:10

Geras kai kurioms kalboms: http://detectmobilebrowsers.com/

10
03 дек. Radeko atsakymas 03 d. 2017-12-03 05:05 '17 at 5:05 2017-12-03 05:05

Jei norite pridėti papildomą valdymo sluoksnį, naudoju HTML5 saugyklą, kad nustatytumėte, ar ji naudoja mobilųjį saugyklą ar darbalaukio saugyklą. Jei naršyklė nepalaiko atminties, turiu daugybę mobiliųjų naršyklės pavadinimų ir palyginu vartotojo agentą su masyvo naršyklėmis.

Tai gana paprasta. Čia yra funkcija:

 // 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; } 
7
18 апр. atsakymą pateikė Rasmus Søborg 18 balandis. 2013-04-18 13:19 '13, 13:19, 2013-04-18 13:19

Aš patariu patikrinti http://wurfl.io/

Trumpai tariant, jei importuojate mažą „JavaScript“ failą:

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

Būsite su JSON objektu, kuris atrodo taip:

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

(Tarkime, kad naudojate „Nexus 7“), ir galite daryti tokius dalykus:

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

Tai jūs ieškote.

Atsakomybės apribojimas: dirbau kompanijoje, siūlančioje šią nemokamą paslaugą.

7
11 марта '14 в 20:20 2014-03-11 20:20 atsakymą pateikė Luca Passani kovo 14 d. 14 val. 20:20 2014-03-11 20:20

Patikrinkite įrašą , jis suteikia tikrai gerą kodą, ką daryti, jei aptinkami jutikliniai įrenginiai arba ką daryti, jei „touchstart“ įvykis vadinamas:

 $(function(){ if(window.Touch) { touch_detect.auto_detected(); } else { document.ontouchstart = touch_detect.surface; } }); // End loaded jQuery var touch_detect = { auto_detected: function(event){  alert('this was auto detected'); activateTouchArea(); }, surface: function(event){  alert('this was detected by touching'); activateTouchArea(); } }; // touch_detect function activateTouchArea(){  var element = document.getElementById('element_id'); element.addEventListener("touchstart", touchStart, false); } function touchStart(event) {  event.preventDefault(); } 
6
23 дек. Safran Ali atsakė į 23 d 2011-12-23 01:43 '11 prie 1:43 2011-12-23 01:43

Žinant, kad „ TouchEvent skirtas tik mobiliesiems įrenginiams, galbūt paprasčiausias būdas yra patikrinti, ar naudotojo įrenginys jį palaiko:

 function isMobile() { try { document.createEvent("TouchEvent"); return true; } catch(e) { return false; } } 
6
06 июня '17 в 9:05 2017-06-06 09:05 Atsakymą pateikė Alex Jolig birželio 06 d. 17 val. 9:05 2017-06-06 09:05

Siūlyčiau naudoti tokį eilių derinį, kad patikrintumėte, ar naudojamas prietaiso tipas.

Pagal „ Mozilla“ dokumentacijos versiją rekomenduojama naudoti „ Mobi . Tačiau kai kurie seni stalai negerai, jei Mobi tik „ Mobi , todėl taip pat turėtume naudoti „ Tablet eilutę.

Panašiai, saugiam naudojimui, prietaisų tipui tikrinti taip pat galima naudoti „ iPad ir „ iPhone .

Dauguma naujų įrenginių grįš į vieną Mobi ryšio liniją.

 if (/Mobi|Tablet|iPad|iPhone/.test(navigator.userAgent)) { // do something } 
6
30 марта '17 в 10:32 2017-03-30 10:32 atsakymą pateikė Sanjay Joshi kovo 30 d. 17, 10:32 2017-03-30 10:32

Čia galite naudoti šią funkciją, kad gautumėte tikrą / klaidingą atsakymą apie tai, ar naudojate mobilųjį naršyklę. Taip, ji šnipinėja naršyklę, tačiau kartais būtent tai jums reikia.

 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; } 
6
06 окт. Jonathon Hill atsakymas, 06 spalis 2011-10-06 19:46 '11, 19:46, 2011-10-06 19:46

Paprasta funkcija, pagrįsta 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)); } 
5
11 марта '14 в 17:00 2014-03-11 17:00 atsakymą pateikė lucasls kovo 11 d. 14 val. 17:00 2014-03-11 17:00

Naudokite:

  (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); 

Tada naudokite:

 if(jQuery.browser.mobile) {  console.log('You are using a mobile device!'); } else {  console.log('You are not using a mobile device!'); } 
5
06 июня '13 в 18:01 2013-06-06 18:01 atsakymą pateikė „ NCoder“ birželio 13 d. 13 val. 6:01 2013-06-06 18:01

Visuose atsakymuose naršyklė aptinkama pasirinktiniu agentu, bet aptikti įrenginius, pagrįstus naudotojo agentu, nėra geras sprendimas, geriau nustatyti tokias funkcijas kaip jutiklinis įrenginys (naujoje jQuery jie ištrina $.browser ir vietoj to naudoja $.support ).

Jei norite sužinoti mobilųjį telefoną, galite patikrinti palietimo įvykius:

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

geriausių būdų aptikti jutiklinio ekrano įrenginį naudojant „JavaScript“?

5
06 мая '14 в 14:11 2014-05-06 14:11 atsakymas pateikiamas jububic 06 gegužės 14 d. 14:11 2014-05-06 14:11

Labai ačiū. Nedideli „Windows Phone“ ir „Zune“ palaikymo patobulinimai:

  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"; } 
4
26 февр. Atsakymą pateikė Viktoras Juri 26 vasario mėn. 2012-02-26 23:57 '12, 23:57 2012-02-26 23:57

Jei nustatoma, kad tik navigator.userAgent tikrinimas navigator.userAgent ne visada patikimas. Padidėjęs patikimumas gali būti pasiektas patikrinant navigator.platform . Panašu, kad paprastas ankstesnio atsakymo pakeitimas veikia geriau:

 if (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) || (/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.platform))) { // some code... } 
3
24 янв. atsakymas pateikiamas Mark Jan 24 2013-01-24 18:10 '13, 18:10, 2013-01-24 18:10

Taip pat galite atrasti tai, kaip nurodyta toliau.

 $.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")); }; 
3
16 марта '13 в 19:25 2013-03-16 19:25 atsakymas suteiktas Nur Rony kovo 16 d., 19:25, 2013-03-16 19:25

Galite naudoti daugialypės terpės užklausą, kad galėtumėte lengvai jį apdoroti.

 isMobile = function(){ var isMobile = window.matchMedia("only screen and (max-width: 760px)"); return isMobile.matches ? true : false } 
3
26 июня '18 в 5:52 2018-06-26 05:52 atsakymas suteikiamas vinui birželio 26, 18 d. 5:52 ; 2018-06-26 05:52

Vartotojų agentų stygos neturėtų būti patikimos vieni. Toliau pateiktas sprendimas bus taikomas visose situacijose.

 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))); } 

ir skambinkite šią funkciją:

 isMobile(navigator.userAgent || navigator.vendor || window.opera) 
3
26 окт. atsakymas pateikiamas kaxi1993 26 okt. 2016-10-26 16:16 '16, 16:16 pm 2016-10-26 16:16
  • 1
  • 2

Другие вопросы по меткам или Задайте вопрос