ජංගම උපාංගයක් හඳුනා ගැනීමට හොඳම ක්‍රමය කුමක්ද?


1669

JQuery හි පරිශීලකයෙකු ජංගම උපාංගයක් භාවිතා කරන්නේද නැද්ද යන්න හඳුනා ගැනීමට ස්ථිර ක්‍රමයක් තිබේද? CSS @media ගුණාංගයට සමාන දෙයක් තිබේද? බ්‍රව්සරය අතින් ගෙන යා හැකි උපාංගයක් තිබේ නම් වෙනත් ස්ක්‍රිප්ට් එකක් ධාවනය කිරීමට මම කැමතියි.

JQuery $.browserශ්‍රිතය මා සොයන දේ නොවේ.


8
ජංගම උපාංග සඳහා විශේෂයෙන් ජංගම URL එකක් සපයන්න. බොහෝ ප්‍රධාන වෙබ් අඩවි ජංගම උපාංග හසුරුවන ආකාරය මෙයයි. M.google.com බලන්න .
මෙගර්

6
jQuery එසේ නොකරන අතර සෑම දෙයක්ම කළ නොහැක. එය හරස් බ්‍රව්සරයේ DOM ගමන් කිරීම සහ හැසිරවීම, බ්‍රව්සර් අතර සරල සජීවිකරණය සහ අජැක්ස් සපයන අතර ප්ලගීන සඳහා ඇටසැකිලි රාමුවක් නිර්මාණය කරයි. විශේෂයෙන් jQuery විසඳුමක් ඉල්ලීමට පෙර කරුණාකර jQuery හි සීමාවන් ගැන සැලකිලිමත් වන්න .
යී ජියැං

80
පරිශීලක නියෝජිතයින් නිරන්තරයෙන් ඉලක්ක කරා ගමන් කරයි, මෙම ලිපිය කියවන සෑම කෙනෙකුම පරිශීලක නියෝජිතයින් මංකොල්ලකෑම ගැන ඉතා සැලකිලිමත් විය යුතුය
රොබ්

46
'ජංගම' උපාංගයක් යනු කුමක්ද? එය ස්පර්ශයට සහය දක්වන උපාංගයක්ද (මීයන් සහිත ක්‍රෝම් පික්සෙල් සහ වින්ඩෝස් 8 ලැප්ටොප් ද ඇතුළුව)? එය කුඩා තිරයක් සහිත උපාංගයක්ද (දෘෂ්ටි විතානයේ අයිපෑඩ් ගැන කුමක් කිව හැකිද)? එය මන්දගාමී CPU සහිත උපාංගයක්ද? නැතිනම් මන්දගාමී අන්තර්ජාල සම්බන්ධතාවයක් ඇති උපාංගයක්ද? ඔබට කිරීමට අවශ්‍ය දේ අනුව මෙම ප්‍රශ්නයට පිළිතුර වෙනස් වේ. තිර විභේදනය හෝ ස්පර්ශය ඉලක්ක කිරීම පහසුය. සමහර උපාංග සඳහා කුඩා අන්තර්ගතයන් හෝ අඩු තීව්‍රතාවයකින් යුත් ජේඑස් සේවය කිරීමට ඔබට අවශ්‍ය නම් රිදී උණ්ඩයක් නොමැත. Window.navigator.connection සඳහා පරීක්‍ෂා කර නැවත (නපුරු, නරක, වැරදි උපදෙස්) පරිශීලක ඒජන්ට් ස්නයිෆින් වෙත වැටෙන්න. මගේ ශත 2 යි.
ඩේවිඩ් ගිල්බට්සන්

3
Ole කෝල් "කෝල් 9" ජොන්සන් මගේ අදහස හරියටම. ස්පර්ශය, මන්දගාමී CPU, මන්දගාමී ජාලය සහ කුඩා තිරය සඳහා 'ජංගම' කුඩයක් ලෙස භාවිතා වන බව පෙනේ. නමුත් මේ කිසිවක් පරිපූර්ණ උපකල්පන නොවේ. මොබයිල් පිළිබඳ කිසියම් නොපැහැදිලි සංකල්පයක් සඳහා සැලසුම් කිරීමට වඩා මේවා තනි තනිව සලකා බැලීමෙන් වඩා හොඳ නිෂ්පාදනයක් ලැබෙනු ඇතැයි මම විශ්වාස කරමි. එබැවින් මම එම ප්‍රශ්නය OP වෙත ඉදිරිපත් කරමි.
ඩේවිඩ් ගිල්බට්සන්

Answers:


2045

සංස්කාරක සටහන: පරිශීලක නියෝජිත හඳුනාගැනීම නවීන වෙබ් යෙදුම් සඳහා නිර්දේශිත තාක්ෂණයක් නොවේ. මෙම කරුණ සනාථ කිරීම සඳහා මෙම පිළිතුරට පහත අදහස් බලන්න. විශේෂාංග හඳුනාගැනීම සහ / හෝ මාධ්‍ය විමසුම් භාවිතා කරමින් අනෙක් පිළිතුරු වලින් එකක් භාවිතා කිරීමට යෝජනා කෙරේ.


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"

සටහන: jQuery v1.9.1$.browser මත ඉවත් කරන ලදි . නමුත් ඔබට මෙය 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|\-[a-w])|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;
}

442
පරිශීලක නියෝජිත ස්නයිෆින් යනු ඉතා අනවශ්‍ය හඳුනාගැනීමේ තාක්‍ෂණයකි, පරිශීලක නියෝජිත නූල් නිරන්තරයෙන් චලනය වන ඉලක්කයකි, ඒවා තනිවම විශ්වාස නොකළ යුතුය. මෙම තනතුරට ඉහළින් ඡන්දය දෙන පුද්ගලයින් වැඩි දුර පර්යේෂණ කිරීම ගැන සලකා බැලිය යුතුය.
රොබ්

65
පරිශීලක නියෝජිතයා වෙතින් නිශ්චිත උපාංග සඳහා මංකොල්ලකෑමේ එක් ගැටළුවක් නම්, නව උපාංග එළියට එන විට ඔබේ හඳුනාගැනීම යාවත්කාලීන කිරීමට මතක තබා ගත යුතුය. මෙය කදිම විසඳුමක් නොවේ.
ICodeForCoffee

11
ඇන්ඩ්‍රොයිඩ් හි ඩොල්ෆින් බ්‍රව්සරය එම නූල් කිසිවක් එවන්නේ නැත!
feeela

89
ඔබේ පරිශීලකයා ප්‍රමාණවත් තරම් කපටි නම් හෝ සංවර්ධකයින් ගොළු පරිශීලක
නූල

58
මූසිකය සහිත ඇන්ඩ්‍රොයිඩ් රූපවාහිනියක් ඔබ සලකන්නේ කෙසේද? ද්විත්ව මාදිලියේ (යතුරුපුවරුව සමඟ හෝ ස්පර්ශ තිරය ලෙස) ධාවනය කළ හැකි වින්ඩෝස් පරිගණකයක් කෙතරම් ජංගමද? අයිපෑඩ් නිර්මාණය කිරීමට පෙර ඔබ මෙය කළේ නම්, පසුව එය ඔබගේ සියලු වෙබ් අඩවි වලට එක් කිරීමට සිදු විය. ඊළඟ මෙහෙයුම් පද්ධති එළියට එන්නේ: උබුන්ටු මොබයිල්, ෆයර්ෆොක්ස් ඕඑස්, ටයිසන් ....This.Is.A.Bad.Idea.
ෆ්‍රැන්චෙස්කෝඑම්එම්

546

මට නම් කුඩායි ඒ නිසා මම මෙම තාක්ෂණය භාවිතා කරනවා:

CSS ගොනුවේ:

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

මගේ පරමාර්ථය වූයේ මගේ වෙබ් අඩවිය "ජංගම-හිතකාමී" වීමයි. එබැවින් මම CSS මාධ්‍ය විමසුම් භාවිතා කරන්නේ තිරයේ ප්‍රමාණය අනුව මූලද්‍රව්‍ය පෙන්වීමට / සැඟවීමට ය.

උදාහරණයක් ලෙස, මගේ ජංගම අනුවාදයේ ෆේස්බුක් ලයික් බොක්ස් සක්‍රිය කිරීමට මට අවශ්‍ය නැත, මන්ද එය එම පැතිකඩ රූප සහ දේවල් පටවන බැවිනි. ජංගම අමුත්තන්ට එය හොඳ නැත. එබැවින්, බහාලුම් මූලද්‍රව්‍යය සැඟවීමට අමතරව, මම මෙයද කරන්නේ 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 වෙතින් දැක ගත හැකිය

මම තවමත් ජංගම අනුවාදය මත වැඩ කරමින් සිටිමි, එබැවින් මෙය ලිවීමේදී එය තවමත් පෙනෙන්නට නැත.

යාවත්කාලීන කිරීම dekin88

මාධ්‍ය හඳුනාගැනීම සඳහා ජාවාස්ක්‍රිප්ට් ඒපීඅයි ගොඩනගා ඇත. ඉහත විසඳුම භාවිතා කරනවා වෙනුවට පහත සඳහන් දෑ භාවිතා කරන්න:

$(function() {      
    let isMobile = window.matchMedia("only screen and (max-width: 760px)").matches;

    if (isMobile) {
        //Conditional script here
    }
 });

බ්‍රව්සරය සහාය දක්වයි: http://caniuse.com/#feat=matchmedia

මෙම ක්‍රමයේ ඇති වාසිය නම් එය සරල හා කෙටි පමණක් නොව, ඔබට අවශ්‍ය නම් ස්මාර්ට් ෆෝන් සහ ටැබ්ලට් වැනි විවිධ උපාංග වෙන වෙනම ඉලක්ක කර ගත හැකි වීමයි.


8
මෙය ක්‍රියාත්මක වීමට ඔබට # මූලද්‍රව්‍යයක් අවශ්‍ය නොවේද?
රිමර්

70
-1 screen.widthදේපල ගෝලීය ය. අත්තනෝමතික ලෙස DOM වෙත අංගයක් එකතු කිරීම සහ අනවශ්‍ය ලෙස CSS මාධ්‍ය විමසුම් ගෙන ඒම අවශ්‍ය නොවේ. ප්ලස්, බ්‍රව්සරය ඩෙස්ක්ටොප් එකක තිබේ නම් සහ පරිශීලකයා කවුළුව ප්‍රතිප්‍රමාණනය $is_mobileකරන්නේ නම් යාවත්කාලීන නොවනු ඇත.
merv

98
ඇයි නැත්තේ:if( screen.width <= 480 ) { // is mobile }
andrewrjones

23
reandrewrjones රෙටිනා උපාංග widthIIRC ගුණාංග අගය මෙන් දෙගුණයක් වේ. ඒ නිසා, එය ඇසේ දෘෂ්ටි විතානයේ iPhone ඇති කරනු ඇත width640උසකින් 960චිත්රයක් දී, සහ width960සහ ක උස 640භූ.
කෝල් ජොන්සන්

68
ඔබ දැන් ප්‍රතිනිර්මාණය කර ඇත window.matchMedia: developper.mozilla.org/en-US/docs/Web/API/Window.matchMedia
පෝල් අයිරිෂ්

237

මොසිල්ලාට අනුව - පරිශීලක නියෝජිතයා භාවිතා කරමින් බ්‍රව්සර් හඳුනාගැනීම :

සාරාංශයක් ලෙස, ජංගම උපාංගයක් හඳුනා ගැනීම සඳහා පරිශීලක නියෝජිතයාගේ ඕනෑම තැනක “මොබි” නූල සෙවීම අපි නිර්දේශ කරමු.

මෙවැනි:

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

ජංගම මොසිල්ලා, සෆාරි, අයිඊ, ඔපෙරා, ක්‍රෝම් යනාදී සියලුම පොදු ජංගම බ්‍රව්සර් පරිශීලක නියෝජිතයින්ට මෙය ගැලපේ.

Android සඳහා යාවත්කාලීන කරන්න

ටැබ්ලට් සඳහා Androidවන ක්‍රෝම් පරිශීලක නියෝජිත පෙළට “මොබී ” ඇතුළත් නොවන බැවින් එරික්එල් පරිශීලක නියෝජිතයෙකු ලෙස පරීක්ෂා කිරීම නිර්දේශ කරයි (දුරකථන අනුවාද කෙසේ වෙතත්):

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

11
පිළිතුරට ස්තූතියි! මම කැමතියි /Mobi/i.test(navigator.userAgent), පරීක්ෂණය () ලෙස එය බූලියන් ආපසු ලබා දෙයි.
arminrosu

5
සැම්සුන්ග් ගැලැක්සි නෝට් 8 හි ඇති ෆයර්ෆොක්ස් මොබයිල් මොබී වෙත ආපසු නොඑන අතර පරීක්ෂණය අසත්‍ය වනු ඇත.
අයිරින්

13
සම්බන්ධිත ලිපියේ සඳහන් වන්නේ: උපාංගය “මොබී” ලෙස සලකුණු කර නොමැති තරම් විශාල නම්, ඔබ ඔබේ ඩෙස්ක්ටොප් වෙබ් අඩවියට සේවය කළ යුතුය (එය හොඳ පුරුද්දක් ලෙස, කෙසේ හෝ ස්පර්ශ ආදානය සඳහා සහාය විය යුතුය, වැඩි ඩෙස්ක්ටොප් යන්ත්‍ර ස්පර්ශක තිර සමඟ දිස්වන බැවින්).
QuasarDonkey

2
මෙය අනෙක් යෝජිත විසඳුම් වලට වඩා හොඳය, එය පිළිගත් පිළිතුර විය යුතුය imo
RNobel

9
ඩර්ප්. ස්තූතියි. මගේ පෙර සටහන සංස්කරණය කිරීමට මට නොහැකි විය. මෙන්න එය නැවතත්:/Mobi/i.test(navigator.userAgent) || /Android/i.test(navigator.userAgent)
එරික්

89

සරල හා effective ලදායී එක් ලයිනර්:

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

කෙසේ වෙතත් ඉහත කේතය ස්පර්ශක තිරය සහිත ලැප්ටොප් පරිගණක සඳහා වන නඩුව සැලකිල්ලට නොගනී. මේ අනුව, මම ජූලියන් විසඳුම මත පදනම්ව මෙම දෙවන අනුවාදය ලබා දෙමි :

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

29
ස්පර්ශ තිරය සහිත වින්ඩෝස් ලැප්ටොප් ගැන කුමක් කිව හැකිද?
ක්‍රිස් සිනෙලි

10
isMobileඔබ ලබා දුන් දෙවන කාර්යය trueමගේ ඩිස්ටොප් උපාංගයට ප්‍රතිලාභ ලබා දෙයි !! (ගූගල් ක්‍රෝම් v44.0)
ලූක්

13
මෙය ජංගම දුරකථන හඳුනාගැනීමක් නොවන isTouchSupported ක්‍රමයකි.
Barkermn01

3
සෑම ජංගම දුරකථනයකම ස්පර්ශ තිර නොමැත.
ඇන්ඩෲ

UlukeP ජංගම අනුකරණයේ සිට ඩෙස්ක්ටොප් වෙත යන විට ඔබ නැවුම්ද?
Christian4423

81

ජංගම උපාංගයක් හඳුනා ගැනීමට අවශ්‍ය වීමෙන් ඔබ කරන්නේ "බ්‍රව්සර් ස්නයිෆින්" සංකල්පයට ටිකක් සමීප වීමයි. සමහර අංග හඳුනා ගැනීම වඩා හොඳ වනු ඇත. Http://www.modernizr.com/ වැනි පුස්තකාලවලට ඒ සඳහා සහාය විය හැකිය.

උදාහරණයක් ලෙස, ජංගම සහ ජංගම නොවන අතර රේඛාව කොහිද? එය දිනෙන් දින බොඳ වේ.


3
තවමත්, පරිශීලකයාට එම උපාංග සඳහා "jquery mobile" භාවිතා කිරීමට අවශ්‍ය විය හැකිය.
සර්බර්

9
උදාහරණයක් ලෙස, "ජංගම" "ජංගම නොවන" සමඟ ඇති මගේ ගැටළුව මගේ පෙරළීමේ අංගයන්ය, විශේෂාංග ක්‍රියා විරහිත කිරීම සඳහා මා විසින් JS සකසා ඇත, හඳුනා ගැනීමට අවශ්‍යය
සෑම් සුස්මාන්

4
කෙසේ වෙතත්, ඔබට උපාංග විශේෂිත බාගත කළ හැකි යෙදුමක් ලබා දීමට අවශ්‍ය නම් එය ප්‍රයෝජනවත් විය හැකිය.
බාස්ට්

3
එය තත්වය මත රඳා පවතී, පරිශීලකයා ජංගම උපාංගයක සිටීදැයි මට පවසන යමක් මම සොයමි, එවිට මට බර ජාවාස්ක්‍රිප්ට් පදනම් කරගත් සජීවිකරණ අක්‍රීය කළ හැකිය. පරිශීලකයාගේ බ්‍රව්සරයේ ජාවාස්ක්‍රිප්ට් කාර්ය සාධන හැකියාවන් 'හඳුනා ගැනීමට' උත්සාහ කරනවාට වඩා යූඒඒ ස්නයිෆින් කිරීම වඩාත් යෝග්‍ය වේ.
රික්

9
ජංගම හා ජංගම නොවන ජංගම දුරකථන ඉතා විශාල වෙනසක් වන අතර, ඔබ ජංගම / ඩෙස්ක්ටොප් අත්දැකීමක් සඳහා අන්තර්ක්‍රියා / ui සපුරාලීමට උත්සාහ කරන විට “විශේෂාංග හඳුනාගැනීම” භාවිතා කිරීම මෝඩකමකි. පුද්ගලිකව, වර්තමාන බ්‍රව්සරය ක්‍රියාත්මක වන මෙහෙයුම් පද්ධතිය ලබා ගැනීමට පහසු (විශ්වාසදායක) ක්‍රමයක් තිබෙන්නට ඇතැයි මම ප්‍රාර්ථනා කරමි
nbsp

66

එය jQuery නොවේ, නමුත් මට මෙය හමු විය: http://detectmobilebrowser.com/

එය භාෂා කිහිපයකින් ජංගම බ්‍රව්සර් හඳුනා ගැනීමට ස්ක්‍රිප්ට් සපයන අතර ඉන් එකක් ජාවාස්ක්‍රිප්ට් ය. එය ඔබ සොයන දේට උදව් වනු ඇත.

කෙසේ වෙතත්, ඔබ jQuery භාවිතා කරන බැවින්, ඔබට jQuery.support එකතුව ගැන දැනුවත් වීමට අවශ්‍ය විය හැකිය. එය වත්මන් බ්‍රව්සරයේ හැකියාවන් හඳුනා ගැනීම සඳහා ගුණාංග එකතුවකි. ප්‍රලේඛනය මෙහි ඇත: http://api.jquery.com/jQuery.support/

ඔබ ඉටු කිරීමට උත්සාහ කරන්නේ කුමක්දැයි මම නොදනිමි, මේවායින් වඩාත්ම ප්‍රයෝජනවත් වන්නේ කුමක්දැයි මම නොදනිමි.

මේ සියල්ල කියමින්, ඔබේ හොඳම ඔට්ටුව වන්නේ සේවාදායක පාර්ශවීය භාෂාවක් භාවිතා කර ප්‍රතිදානය වෙත වෙනත් ස්ක්‍රිප්ට් එකක් හරවා යැවීම හෝ ලිවීමයි (එය විකල්පයක් නම්). ජංගම බ්‍රව්සරයක x හි හැකියාවන් ඔබ සැබවින්ම නොදන්නා හෙයින්, සේවාදායකයේ පැත්තේ හඳුනාගැනීම සහ වෙනස් කිරීමේ තර්කනය වඩාත් විශ්වාසදායක ක්‍රමය වනු ඇත. ඇත්ත වශයෙන්ම, ඔබට සේවාදායක පාර්ශවීය භාෂාවක් භාවිතා කළ නොහැකි නම් ඒ සියල්ලම වැදගත් කරුණකි :)


6
එය iPad සඳහා සහය නොදක්වයි. අයිපෑඩ් සඳහා සහය දැක්වීම සඳහා, ip (hone | od) සහ "| ad" සඳහා බලන්න - උදා: ip (hone | od | ad)
Jayson Ragasa

3
මම ඩිටෙක්ට් මොබයිල් බ්‍රව්සර්.කොම් වෙතින් ජාවාස්ක්‍රිප්ට් අත්හදා බැලුවෙමි, එය අයිපෑඩ් සඳහා ක්‍රියා නොකරයි.
මිල්ච් පැටර්න්

3
IlMilchePatern ඒ ස්ක්‍රිප්ට් දෝෂ සහිත නිසා, අයිපෑඩ් වෙනුවට අයිපෑඩ් භාවිතා කරන්න, එවිට එය ක්‍රියා කරයි, මගේ සැම්සුන් ටැබ් එකේ මට ගැටලුවක් ඇති විය, ඇන්ඩ්‍රොයිඩ් අයිසෝ ඇන්ඩ්‍රොයිඩ් භාවිතා කිරීමට සිදුවිය :)
Coen Damen

13
එහි jQuery අනුවාදයක් ඇත, එය පරිපූර්ණව ක්‍රියා කරයි, නමුත් ටැබ්ලටය හඳුනා ගැනීම සඳහා ඔබ ගැන|android|ipad|playbook|silk විස්තර කොට ඇති පරිදි එකතු කළ යුතුය (එය සැලසුම අනුව)
cprcrack

3
හොඳයි, ටැබ්ලටයක් ජංගම දුරකථනයක් නොවේ. වෙබ් අඩවිය ඩෙක්ටෙක්ට් ජංගම බ්‍රව්සර් ලෙස හැඳින්වේ .
ෆීලික්ස් ඒව

47

සමහර විට අයිෆෝන් වෙළඳසැලට හෝ ඇන්ඩ්‍රොයිඩ් වෙළඳපොළට සබැඳියක් වැනි සේවාදායකයාට එම උපාංගයට විශේෂිත වූ අන්තර්ගතයන් පෙන්වීම සඳහා කුමන වෙළඳ නාම උපාංගයක් භාවිතා කරන්නේ දැයි දැන ගැනීමට අවශ්‍ය වේ. නවීකරණකරණය විශිෂ්ටයි, නමුත් ඔබට පෙන්වන්නේ 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();
    }
}

මෙම විසඳුම ග්‍රැෆික් ම i ් ac ාක්කා http://graphicmaniacs.com/note/detecting-iphone-ipod-ipad-android-and-blackberry-browser-with-javascript-and-php/


මෙය විශිෂ්ටයි. අයිපෑඩ් හෝ ඇන්ඩ්‍රොයිඩ් දුරකථනයක් භාවිතා කරන විට අනුචලනය කිරීමේදී ක්‍රියාත්මක වන jQuery ශ්‍රිතයක් අක්‍රිය කිරීමට මට අවශ්‍ය වූ අතර විවිධ උපාංගවල තිර පළල එකිනෙකට වෙනස් බැවින් මෙය සරල විසඳුමකි. ස්තූතියි ටොන්.
එරික් ඇලන්

ඇන්ඩ්‍රොයිඩ් පරීක්‍ෂණය භාවිතා කිරීමේ ඇති එකම ගැටළුව වන්නේ ඇන්ඩ්‍රොයිඩ් පරිශීලක නියෝජිතයා භාවිතා කරන
තුණ්ඩය

විශේෂාංග හඳුනාගැනීමේ මූලධර්මවාදීන් විය යුතු නැති බව පෙන්වන හොඳ පිළිතුරකි.
ප්‍රනාන්දු

44

මෙයින් විසඳුමක් හමු විය: 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...
}

උප නූල සෘජුවම උපාංගයේ වර්ගයට සම්බන්ධ බව ඔබට විශ්වාස කළ හැකි විට පරිශීලක නියෝජිතයා මත පදනම් වූ විසඳුමක් හොඳින් ක්‍රියාත්මක වේ. එනම් iPad = iPad. කෙසේ වෙතත් දැන් විවිධ වර්ගයේ උපාංග (25,000 ට වඩා) ඇති බැවින් බොහෝ ව්‍යාපාරික අරමුණු සඳහා ප්‍රවේශය ප්‍රමාණවත් නොවේ. විශ්වසනීය හා ශක්තිමත් විකල්පයක් සැපයීම සඳහා මම 51Degrees.com විවෘත මූලාශ්‍ර ව්‍යාපෘතිය ආරම්භ කළෙමි . එය ජාවාස්ක්‍රිප්ට් සහ සේවාදායක පැත්තෙන් ක්‍රියා කරයි. සියලුම ලියකියවිලි මෙහි ඇත ... 51degrees.com/support/documentation
ජේම්ස් රෝස්වෙල්

මම ඉහත අස්වෙල් භාවිතා කළ අතර එය මට හොඳින් ක්‍රියාත්මක විය, නමුත් දැන් එය ඇන්ඩ්‍රොයිඩ් 5.1 සහ ඊට ඉහළින් ක්‍රියා නොකරයි, ඇන්ඩ්‍රොයිඩ් 5.1 සහ ඊට වැඩි යමක් වෙනස් වී තිබේද?
ඉම්රාන් කමර්

if (isMobile.Android ()) {document.getElementById ("myAnchor"). setAttribute ("href", " google.com" ); }
අම්රනූර් රහ්මාන්

26

"ජංගම" යන්නෙන් ඔබ අදහස් කරන්නේ "කුඩා තිරය" නම්, මම මෙය භාවිතා කරමි:

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

අයිෆෝන් මත ඔබ 320 හි window.screen.width සමඟ අවසන් වනු ඇත. ඇන්ඩ්‍රොයිඩ් හි ඔබ අවසන් වනුයේ window.outerWidth 480 (එය ඇන්ඩ්‍රොයිඩ් මත රඳා පැවතිය හැකි වුවද) ය. අයිපෑඩ් සහ ඇන්ඩ්‍රොයිඩ් ටැබ්ලට් පරිගණක 768 වැනි අංක ලබා දෙන අතර එමඟින් ඔබට අවශ්‍ය පරිදි සම්පූර්ණ දර්ශනය ලැබෙනු ඇත.


1
'window.screen.width' ප්‍රමාණවත් නොවන්නේ ඇයි? ඔබ 'window.screen.width' හෝ 'window.outerWidth' වලින් කුඩා එකක් ගන්නා බවක් පෙනේ. ඔබ 'පිටත පළල' ගැන සැලකිලිමත් වන්නේ ඇයි? පිළිතුරට කල්තියා ස්තූතියි!
user1330974

16

ඔබ Modernizr භාවිතා 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
    }

ඔබ Modernizr භාවිතා නොකරන්නේ නම්, ඔබට Modernizr.touchඉහත ශ්‍රිතය ආදේශ කළ හැකිය('ontouchstart' in document.documentElement)

පරිශීලක නියෝජිතයා පරීක්ෂා කිරීමෙන් iemobileඔබට හඳුනාගත් මයික්‍රොසොෆ්ට් ජංගම උපාංගවලට වඩා පුළුල් පරාසයක් ලැබෙනු ඇති බව සලකන්න Windows Phone.

මෙම SO ප්‍රශ්නයද බලන්න


ඩාර්ට් හි ද එයම ය : TouchEvent.supported.
කයි සෙල්ග්‍රන්

('ontouchstart' in window)විකල්පයක් වන Modernizr.touch, ද, hacks.mozilla.org/2013/04/...
JVE999

මම හිතන්නේ modernizr හොඳ විසඳුමක්!
බොබී රසල්

|බොහෝ තරඟ වෙනුවට ඔබ ඇත්ත වශයෙන්ම RegEx භාවිතා කළ යුතුය . ඔබට නවීකරණයක් ඇති toLowerCase()බැවින් ඔබටද අවශ්‍ය නොවේ i. මෙන්න: var isTouchDevice = Modernizr.touch || /iphone|ipod|ipad|android|iemobile|iphone|ipad|ipod|blackberry|bada/i.test(navigator.userAgent);
oriadam

14

ඔබට විශ්වාසය තැබිය navigator.userAgentනොහැක, සෑම උපාංගයක්ම එහි සැබෑ මෙහෙයුම් පද්ධතිය හෙළි නොකරයි. උදාහරණයක් ලෙස මගේ HTC මත, එය සැකසුම් මත රඳා පවතී ("ජංගම අනුවාදය භාවිතා කිරීම" සක්‍රිය / අක්‍රිය). මත http://my.clockodo.com , අපි සරලව භාවිතා screen.widthකුඩා උපකරණ සොයා ගැනීමට. අවාසනාවට, සමහර ඇන්ඩ්‍රොයිඩ් අනුවාද වල 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");
}

8
බොහෝ ජංගම දුරකථන වල පළල> 1000 ක් ඇත, විශේෂයෙන් භූ දර්ශන මාදිලියේ
oriadam

14

මෙම ප්‍රශ්නයට පිළිතුරු රාශියක් ඇති බව මම දනිමි, නමුත් මා දුටු දෙයින් කිසිවෙකු මෙය විසඳන ආකාරයට පිළිතුරට එළඹෙන්නේ නැත.

පළල මත පදනම් වූ වෙබ් ලේඛනයට අදාළ මෝස්තර මොනවාද යන්න තීරණය කිරීම සඳහා CSS පළල (මාධ්‍ය විමසුම්) භාවිතා කරයි. JavaScript හි පළල භාවිතා නොකරන්නේ ඇයි?

උදාහරණයක් ලෙස, බූට්ස්ට්‍රැප් (ජංගම පළමු) මාධ්‍ය විමසුම් වල, හදිසි / කඩන ස්ථාන 4 ක් ඇත:

  • අමතර කුඩා උපාංග පික්සල් 768 සහ ඊට අඩු ය.
  • කුඩා උපාංග පික්සල් 768 සිට 991 දක්වා පරාසයක පවතී.
  • මධ්‍යම උපාංග පික්සල් 992 සිට 1199 දක්වා පරාසයක පවතී.
  • විශාල උපාංග පික්සල් 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();

ඔබේ ප්‍රශ්නය විය

බ්‍රව්සරය අතින් ගෙන යා හැකි උපාංගයක් තිබේ නම් වෙනත් ස්ක්‍රිප්ට් එකක් ධාවනය කිරීමට මම කැමතියි.

දැන් අප සතුව උපාංග තොරතුරු ඇති බැවින් ඉතිරිව ඇත්තේ if ප්‍රකාශයකි:

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

කෝඩ්පෙන් හි උදාහරණයක් මෙන්න: http://codepen.io/jacob-king/pen/jWEeWG


මෙය මට වඩාත් සුදුසු විය. මම සමහර ජංගම ඉදිරි පිටු සඳහා බූට්ස්ට්‍රැප් භාවිතා කරන බැවින්, ජංගම නොවන ඉදිරියට (බූට්ස්ට්‍රැප් නොවන) සිට බූට්ස්ට්‍රැප් පිටුවකට ස්වයංක්‍රීයව හරවා යැවීමට මෙම තාක්ෂණය හොඳින් ක්‍රියාත්මක විය. ඉඟිය: IE11 F12 මෙවලම්වල එක් කුඩා ගැටළුවක් මට හමු විය: ජංගම උපාංගයක් සඳහා F12 Dev මෙවලම් වල අනුකරණයන් සක්‍රිය කර ඇති අතර කවුළු ප්‍රමාණය හඳුනා ගැනීමට එය අපහසු විය. මම එය xs බ්‍රේක් පොයින්ට් එකට පහළින් නැවත ප්‍රමාණ කළ නමුත් එය එම්ඩී ලෙස හඳුනාගනිමින් සිටියෙමි. මම දුරකථනයක් අනුකරණය කිරීම නතර කර පිටුව නැවුම් කළ විට, එය ප්‍රමාණය නිවැරදිව හඳුනාගත් අතර මගේ කේතයේ මම බූට්ස්ට්‍රැප් පිටුවකට හරවා යවමි.
ජෙෆ් මර්ග්ලර්

එනම් මම ටික වේලාවක් බලා සිටියෙමි. ඔබට ස්තුතියි!
සංවර්ධක

2
@ ජාකොබ්කිං ඔබ කීවේ Small Devices range from 768 to 991 pixels.මෙයින් අදහස් වන්නේ එය window.innerWidth < 992(991 ඇතුළත් කර ඇති) 1199 සඳහා එකම දෙය එය <1200 විය යුතු බවයි
medBouzid

13

ජාවාස්ක්‍රිප්ට් එක පේළියක:

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

පරිශීලක නියෝජිතයා තුළ 'මොබී' (එම්ඩීඑන් අනුව) සහ ඔන්ටූච්ස්ටාර්ට් තිබේ නම් එය ජංගම උපාංගයක් විය හැකිය.


1
කළ යුතුව තිබුණි /Mobi/.test(navigator.userAgent)... matchමා වෙනුවෙන් එය නොකළේය
කෙසෙල් ඇසිඩ්

12

කිසිවෙකු ලස්සන වෙබ් අඩවියක් පෙන්වා නොදීම ගැන මම පුදුම වෙමි: http://detectmobilebrowsers.com/ ජංගම හඳුනාගැනීම සඳහා විවිධ භාෂාවලින් එය සූදානම් කළ කේතයක් ඇත (ඇතුළුව නමුත් ඒවාට පමණක් සීමා නොවේ):

  • අපාචි
  • සහකාර පොලිස් අධිකාරී
  • සී #
  • IIS
  • ජාවාස්ක්‍රිප්ට්
  • NGINX
  • PHP
  • පර්ල්
  • පයිතන්
  • රේල් පීලි

ඔබට ටැබ්ලට් පරිගණකයද හඳුනා ගැනීමට අවශ්‍ය නම්, අතිරේක RegEx පරාමිතිය සඳහා About කොටස පරීක්ෂා කරන්න.

ඇන්ඩ්‍රොයිඩ් ටැබ්ලට්, අයිපෑඩ්, කින්ඩල් ෆයර් සහ ප්ලේබුක්ස් නිර්මාණයෙන් අනාවරණය නොවේ. ටැබ්ලට් සඳහා සහය එක් |android|ipad|playbook|silkකිරීමට, පළමු රීජෙක්ස් එකට එක් කරන්න .


මට එය ක්‍රියාත්මක වෙමින් පැවතුනි, ඔබ භාවිතා කරන්නේ කුමන කේතයද යන්න ගැටලුවක් ලෙස පෙනෙන තැන ඔබට වඩාත් නිශ්චිතව කිව හැකිද?
මැක්සිම් ලුසික්

එම පිටුව ප්‍රතිචාරයකි, අනෙක් සියලුම ප්‍රතිචාර එම පිටුවේ පිටපත්
රුබන් රූස්

මේවා බොහෝ විට යාවත්කාලීන නොවිය හැකිය (මම එය සත්‍යාපනය කර නොතිබුණද), මම එය නැරඹූ විට වෙබ් අඩවිය මෙසේ කියයි: "රීජෙක්ස් යාවත්කාලීන කරන ලදි: 1 අගෝස්තු 2014".
ග්‍රෙග්

11

කුඩා සංදර්ශන ගැන ඔබ විශේෂයෙන් කනස්සල්ලට පත් නොවන්නේ නම් ඔබට පළල / උස හඳුනාගැනීම භාවිතා කළ හැකිය. එබැවින් පළල යම් ප්‍රමාණයකට වඩා අඩු නම්, ජංගම වෙබ් අඩවිය ඉහළට විසි කරනු ලැබේ. එය පරිපූර්ණ ක්‍රමය නොවිය හැකි නමුත් බහු උපාංග සඳහා හඳුනා ගැනීමට පහසුම ක්‍රමය එය විය හැකිය. ඔබට iPhone 4 (විශාල විභේදනය) සඳහා විශේෂිත එකක් දැමීමට අවශ්‍ය විය හැකිය.


9

අමතර පාලක තට්ටුවක් එක් කිරීමට මම HTML5 ගබඩාව ජංගම ගබඩාවක් හෝ ඩෙස්ක්ටොප් ගබඩාවක් භාවිතා කරන්නේ දැයි හඳුනා ගැනීමට භාවිතා කරමි. බ්‍රව්සරය ආචයනය සඳහා සහය නොදක්වන්නේ නම් මා සතුව ජංගම බ්‍රව්සර නාම ගණනාවක් ඇති අතර මම පරිශීලක නියෝජිතයා අරාවෙහි ඇති බ්‍රව්සර් සමඟ සංසන්දනය කරමි.

එය ඉතා සරල ය. මෙන්න ශ්‍රිතය:

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

1
localStorage මත පදනම් වූ ඔබේ උපකල්පනය තරමක් සිත්ගන්නා සුළුය, ඔබේ ස්ක්‍රිප්ටයට නිවැරදිව ගැලපෙන පරාසයක සහය දක්වන උපාංග හෝ බ්‍රව්සර් ලබා දිය හැකිද? මා ඇසූ මෙම ප්‍රශ්නයට විසඳුමක් සෙවීමට මා උනන්දු වන අතර ජංගම ටැබ්ලට් බ්‍රව්සර් හඳුනා ගැනීමට උත්සාහ කිරීම ඇත්තෙන්ම සිත්ගන්නාසුලු කාර්යයක් විය හැකිය
Gruber

9

පරීක්ෂා navigator.userAgentකිරීම සැමවිටම විශ්වාසදායක නොවන බව සොයාගත හොත් . පරීක්ෂා කිරීමෙන් වැඩි විශ්වසනීයත්වයක් ලබා ගත හැකිය navigator.platform. පෙර පිළිතුරකට සරල වෙනස් කිරීමක් වඩා හොඳින් ක්‍රියාත්මක වන බව පෙනේ:

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

5
අදහස් දැක්වීමක් නොකර අත්තනෝමතික ලෙස පිළිතුරක් පහත් කිරීමට ඉඩ නොදිය යුතුය. හොඳම දෙය නම් එය රළු ය.
මාර්ක්

8

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

ඔබ සොයන්නේ මෙයයි.

වියාචනය: මම මෙම නොමිලේ සේවාව ලබා දෙන සමාගම වෙනුවෙන් වැඩ කරමි.


නෙක්සස් 7 සහ අයිපෑඩ් මිනි හඳුනා ගැනීමට වර්ෆ්ල් අසමත් විය!
ජාකොබ්

නෙක්සස් 7 ගැන යමක් නිවැරදි නැත. සැකසීම් වල නෙක්සස් යූඒඒ නූල නොතිබූ බව ඔබට විශ්වාසද? අයිපෑඩ් මිනි සම්බන්ධයෙන් ගත් කල, ඔව්, එය අනෙක් අයිපෑඩ් වලින් වෙන්කර හඳුනා ගැනීම ඉතා අසීරු ය, නමුත් එය තවමත් අයිපෑඩ් ලෙස හඳුනාගෙන තිබේ, නේද? මගේ තනතුර අවතක්සේරු කළේ ඔබද?
ලූකා පසානි

නැත, අයිපෑඩ් මිනි ඩෙස්ක්ටොප් උපාංගයක් ලෙස අනාවරණය විය
ජාකොබ්

7

මෙම පෝස්ට් එක බලන්න , එය ස්පර්ශ උපාංග අනාවරණය වූ විට කුමක් කළ යුතුද යන්න හෝ ටච්ස්ටාර්ට් සිදුවීම හැඳින්වුවහොත් කුමක් කළ යුතුද යන්න පිළිබඳ හොඳ කේත ස්නිපටයක් ලබා දෙයි:

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

'ontouchstart' in document.documentElementස්පර්ශක සහාය සඳහා වඩා හොඳ පරීක්ෂණයකි window.Touch. ඊටත් වඩා හොඳයි, ස්පර්ශය හඳුනා ගැනීම නිවැරදිව ලබා ගැනීමට බොහෝ සිතුවිලි වැය කර ඇති නිසා Modernizr.js ( modernizr.com ) භාවිතා කරන්න . ඔබ සංවර්ධන කේතය නරඹා "ස්පර්ශය" මත සෙවුවහොත් ඔබට ඔවුන්ගේ ස්පර්ශ හඳුනාගැනීමේ කේතය modernizr.com/downloads/modernizr.js හි දැකිය හැකිය .
රොබෝකාට්

3
ස්පර්ශ හඳුනාගැනීම මට කරදරයක් වී ඇත, මන්ද සමහර නව වින්ඩෝස් 8 ලැප්ටොප් පරිගණක ක්‍රෝම් හි ස්පර්ශක තිර ලෙස හඳුනාගෙන ඇති අතර එය අමුතු ප්‍රති .ල වලට හේතු වේ.
ජේවර්නර්

7

එය පහසුවෙන් හැසිරවීමට ඔබට මාධ්‍ය විමසුම භාවිතා කළ හැකිය.

isMobile = function(){
    var isMobile = window.matchMedia("only screen and (max-width: 760px)");
    return isMobile.matches ? true : false
}

1
මම මෙම ප්‍රවේශයට කැමතියි, මම window.matchMedia("(pointer:coarse)").matches;වෙනත් පිළිතුරකින් ඉවත් කළෙමි .
ජේසන් ලිඩන්

7

නියම පිළිතුර ස්තූතියි. වින්ඩෝස් දුරකථනය සහ සූන් සඳහා සහය දැක්වීම සඳහා කුඩා වැඩිදියුණු කිරීම්:

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

ඔබ ජංගම උපාංග සඳහා හෝවර් / ඇදගෙන යාමේ සිදුවීම් හැසිරවීමට උත්සාහ කරන්නේ නම් මෙය සරලම (සමහර විට හොඳම නොවේ) නිවැරදි කිරීම යැයි මම කියමි. "IsMobile" බූලියන් නිර්මාණය කිරීම සඳහා මම මේ වගේ දෙයක් භාවිතා කරමි, පසුව සෑම හෝවර් / මවුස් ඕවර් සිදුවීමක් සඳහාම පරීක්ෂා කරනු ලැබේ. කොහොමත් මගේ ශත දෙකයි. පරිශීලක අන්තර්ක්‍රියා අවශ්‍ය වන තවත් js පුස්තකාල හෝ කේත එකතු කිරීම මට එතරම් තේරුමක් නැත; මම වැරදියි නම් මාව නිවැරදි කරන්න.
මේන්මාට්

3
ඔබ සාමාන්‍ය ප්‍රකාශන භාවිතා කරන බැවින් ඇත්ත වශයෙන්ම ඒවා භාවිතා කරන්න:if (navigator.userAgent.match(/Android|webOS|iPhone|iPad|etc/)){self.location = "top.htm"}
foobarbecue

6

ඔබ ජංගම බ්‍රව්සරයක ධාවනය කරන්නේද යන්න පිළිබඳ සත්‍ය / අසත්‍ය පිළිතුරක් ලබා ගැනීමට ඔබට භාවිතා කළ හැකි ශ්‍රිතයක් මෙන්න. ඔව්, එය බ්‍රව්සර් මංකොල්ලකෑමකි, නමුත් සමහර විට එය ඔබට අවශ්‍ය දේම වේ.

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

1
බොහෝ ජංගම බ්‍රව්සර්, විශේෂයෙන් ජංගම ක්‍රෝම් හඳුනා ගැනීමට එය අසමත් වනු ඇත. ඔපෙරා මොබයිල්, ෆයර්ෆොක්ස් මොබයිල්, ඔපෙරා මිනි, විවිධ ජනප්‍රිය චීන ජංගම බ්‍රව්සර් යනාදිය මත එය බොහෝ විට අසාර්ථක වනු ඇත
රොබෝ කැට්

ඔබට මේ forසඳහා අවශ්‍ය නැත ! + ඔබට RegExp නිර්මාණය කිරීමට අමතක විය. මෙන්න වඩාත් සරල එකක්:return !!navigator.userAgent.match(new RegExp(agents.join('|'),'i'))
oriadam

6

සියලුම පිළිතුරු බ්‍රව්සරය හඳුනා ගැනීමට පරිශීලක-නියෝජිතයා භාවිතා කරන නමුත් පරිශීලක-නියෝජිතයා මත පදනම් වූ උපාංග හඳුනා ගැනීම එතරම් හොඳ විසඳුමක් නොවේ, ස්පර්ශ උපාංගය වැනි විශේෂාංග හඳුනා ගැනීම වඩා හොඳය (නව jQuery වලදී ඔවුන් ඉවත් $.browserකර $.supportඒ වෙනුවට භාවිතා කරයි ).

ජංගම හඳුනා ගැනීමට ඔබට ස්පර්ශ සිදුවීම් සඳහා පරීක්ෂා කළ හැකිය:

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

සිට ගෙන JavaScript භාවිතා කර 'ස්පර්ශ තිරය' උපාංගය හඳුනාගැනීමට හොඳම ක්රමය කුමක්ද?


4
අවාසනාවකට මෙන්, මෙය විශ්වාසදායක නොවන අතර කෙසේ හෝ එය trueස්පර්ශක තිර සහිත ඩෙස්ක්ටොප් පරිගණක වෙත නැවත පැමිණේ . stucox.com/blog/you-cant-detect-a-touchscreen
JustAMartin

1
ස්පර්ශක තිර සහ සම්පූර්ණ බ්‍රව්සර අත්දැකීම් සහිත ලැප්ටොප් අමතක නොකරන්න. :-)
මයික් කෝර්මන්ඩි

මෙය ජංගම උපාංගයක්ද නැද්ද යන්න පරීක්ෂා කිරීමට යන මාර්ගය මෙය නොවිය හැකි නමුත් ඔබේ ශ්‍රිතයේ නමට අනුව ස්පර්ශ-සක්‍රීය උපාංග සඳහා පරීක්ෂා කිරීම පරිපූර්ණයි. +1 මගෙන් ;-)
කතාරා

6

උපාංග වර්ගය භාවිතා කරන්නේ දැයි පරීක්ෂා කිරීම සඳහා පහත දැක්වෙන නූල් සංයෝජනය භාවිතා කිරීමට මම යෝජනා කරමි.

අනුව මොසිල්ලා ප්රලේඛනය string Mobiනිර්දේශ කරනු ලැබේ. නමුත්, සමහර පැරණි ටැබ්ලට් පරිගණක භාවිතා කරන්නේ නම් පමණක් සත්‍ය නොවේ Mobi, එබැවින් අපි Tabletද නූල් භාවිතා කළ යුතුය .

ඒ හා සමානව, ආරක්ෂිත පැත්තේ සිටීම සඳහා iPadසහ iPhoneඋපාංග වර්ගය පරීක්ෂා කිරීම සඳහා නූල් ද භාවිතා කළ හැකිය.

නව උපාංග බොහොමයක් නැවත නූල් trueසඳහා Mobiපමණක් පැමිණේ .

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

3
ටැබ්ලට් පරිගණකවල වැඩ කිරීම සඳහා මට එහි "ඇන්ඩ්‍රොයිඩ්" එකතු කිරීමට සිදු විය. මට කරකවන්න වෙනවා නමුත් මම ප්‍රවේශයට කැමතියි.
ඇන්ඩි

5

මෙය භාවිතා කරන්න:

/**  * 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\/|\-[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|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!');
}

5

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|\-[a-w])|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
<script>
  function checkIsMobile(){
      if(navigator.userAgent.indexOf("Mobile") > 0){
        return true;
      }else{
        return false;
      }
   }
</script>

ඔබට කිසියම් බ්‍රව්සරයක් තිබේ නම් සහ ඔබ navigator.userAgent ලබා ගැනීමට උත්සාහ කරන්නේ නම් අපට බ්‍රවුසරයේ තොරතුරු පහත දැක්වේ.

මොසිල්ලා / 5.0 (මැකින්ටොෂ්; ඉන්ටෙල් මැක් ඕඑස් එක්ස් 10_13_1) ඇපල්වෙබ්කිට් / 537.36 (කේඑච්ටීඑම්එල්, ගෙකෝ වැනි) ක්‍රෝම් / 64.0.3282.186 සෆාරි / 537.36

ඔබ ජංගම දුරකතනයෙන් කළහොත් ඔබට පහත දේ ලැබෙනු ඇත

මොසිල්ලා / 5.0 (ලිනක්ස්; ඇන්ඩ්‍රොයිඩ් 8.1.0; පික්සල් බිල්ඩ් / ඕපීපී 6.171019.012) ඇපල්වෙබ්කිට් / 537.36 (කේඑච්ටීඑම්එල්, ගෙකෝ වැනි) ක්‍රෝම් / 61.0.3163.98 ජංගම සෆාරි / 537.36

සෑම ජංගම බ්‍රව්සරයකම “ජංගම” අඩංගු නූල් භාවිතා කරන්නා ඇත, එබැවින් වර්තමාන පරිශීලක නියෝජිතයා වෙබ් / ජංගමද යන්න පරීක්ෂා කිරීම සඳහා මම මගේ කේතයේ ඉහත ස්නිපටය භාවිතා කරමි. ප්‍රති result ලය මත පදනම්ව මම අවශ්‍ය වෙනස්කම් කරමි.


4

මම මෙය භාවිතා කරමි

if(navigator.userAgent.search("mobile")>0 ){
         do something here
}

4

Mobiledetect.net ගැන කුමක් කිව හැකිද?

වෙනත් විසඳුම් ඉතා මූලික බව පෙනේ. මෙය සැහැල්ලු PHP පන්තියකි. ජංගම පරිසරය හඳුනා ගැනීම සඳහා එය විශේෂිත HTTP ශීර්ෂ සමඟ ඒකාබද්ධව පරිශීලක-නියෝජිත නූල භාවිතා කරයි. වර්ඩ්ප්‍රෙස්, ඩ්‍රැපාල්, ජූම්ලා, මැජෙන්ටෝ යනාදිය සඳහා ලබා ගත හැකි ඕනෑම තෙවන පාර්ශවීය ප්ලගීන භාවිතා කිරීමෙන් ඔබට මොබයිල් ඩිටෙක්ට් වෙතින් ප්‍රතිලාභ ලබාගත හැකිය.


ප්‍රශ්නය jQuery ඉල්ලා ඇති නිසාද?
ක්‍රයිසර්ජැක්

4

මගේ ව්‍යාපෘති වලදී මම භාවිතා කරන කේතය මෙයයි:

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; }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.