2016-11-01 12 views
1

Ich habe eine Seite, auf der ich erkennen muss, welche Plattform es ist und ob meine Apps für diese Plattform kompatibel sind. Wenn es kompatibel ist, verwende ich native, ansonsten verwende ich externe Tools von Drittanbietern.Woher weiß ich, welche Plattform es ist?

mit whichbrowser.net Ich bekomme Browser-Name, aber wie kann ich erkennen, welche Architektur es ist? ist es PC oder Tablet oder SmartPhone wie man diesen Wert bekommt?

function waitForWhichBrowser(cb) { 
    var callback = cb;     
    function wait() { 
    if (typeof WhichBrowser == 'undefined') 
     window.setTimeout(wait, 100); 
    else 
     callback(); 
    }    
    wait(); 
} 
waitForWhichBrowser(function() { 
    try { 
    Browsers = new WhichBrowser({ 
     useFeatures:  true, 
     detectCamouflage: true 
    }); 

    var n = Browsers.browser.name; 
    var v = Browsers.browser.version.major; 
    var oo = Browsers.os; 
    var d = Browsers.isType('desktop'); // true 

    console.log(oo); 
    console.log(n); 

    if(n=='Chrome') { 
     useNativeBrowser(); 
    } 
    else if(n=='Opera') { 
     useNativeBrowser(); 
    } 
    else if(n=='Firefox') { 
     useNativeBrowser(); 
    } 
    else { 
     // NOW!! offer PC plugin or Tablet plugin or Smart phone plugin 

     //---- 

     // How do i know now if its PC? IE or Safari or IE Edge 

     // How do i know now if its Tablet? iPad, Android, Windows, Tizen? 

     // How do i know now if its Smart phone? iOS, Android, Windows, Tizen 

    } 




    } catch(e) { 

    } 

}); 
+2

Es wäre besser, wenn Sie die Funktionserkennung anstelle der Browser-/Plattformerkennung verwenden. Jede Methode, die Ihren Browser überprüft, kann durch eine einfache Einstellungsänderung verfälscht werden. – Archer

Antwort

2

Ludwig gab eine sehr angemessene Antwort auf diese Frage in diesen answer. Dies ist eine der besten und am besten geeigneten Methoden, um zu überprüfen, ob der Benutzer auf dem Handy ist oder welches Betriebssystem er benutzt.

Schauen Sie sich seine fiddle here

(function (window) { 
    { 
     var unknown = '-'; 

     // screen 
     var screenSize = ''; 
     if (screen.width) { 
      width = (screen.width) ? screen.width : ''; 
      height = (screen.height) ? screen.height : ''; 
      screenSize += '' + width + " x " + height; 
     } 

     // browser 
     var nVer = navigator.appVersion; 
     var nAgt = navigator.userAgent; 
     var browser = navigator.appName; 
     var version = '' + parseFloat(navigator.appVersion); 
     var majorVersion = parseInt(navigator.appVersion, 10); 
     var nameOffset, verOffset, ix; 

     // Opera 
     if ((verOffset = nAgt.indexOf('Opera')) != -1) { 
      browser = 'Opera'; 
      version = nAgt.substring(verOffset + 6); 
      if ((verOffset = nAgt.indexOf('Version')) != -1) { 
       version = nAgt.substring(verOffset + 8); 
      } 
     } 
     // Opera Next 
     if ((verOffset = nAgt.indexOf('OPR')) != -1) { 
      browser = 'Opera'; 
      version = nAgt.substring(verOffset + 4); 
     } 
     // Edge 
     else if ((verOffset = nAgt.indexOf('Edge')) != -1) { 
      browser = 'Microsoft Edge'; 
      version = nAgt.substring(verOffset + 5); 
     } 
     // MSIE 
     else if ((verOffset = nAgt.indexOf('MSIE')) != -1) { 
      browser = 'Microsoft Internet Explorer'; 
      version = nAgt.substring(verOffset + 5); 
     } 
     // Chrome 
     else if ((verOffset = nAgt.indexOf('Chrome')) != -1) { 
      browser = 'Chrome'; 
      version = nAgt.substring(verOffset + 7); 
     } 
     // Safari 
     else if ((verOffset = nAgt.indexOf('Safari')) != -1) { 
      browser = 'Safari'; 
      version = nAgt.substring(verOffset + 7); 
      if ((verOffset = nAgt.indexOf('Version')) != -1) { 
       version = nAgt.substring(verOffset + 8); 
      } 
     } 
     // Firefox 
     else if ((verOffset = nAgt.indexOf('Firefox')) != -1) { 
      browser = 'Firefox'; 
      version = nAgt.substring(verOffset + 8); 
     } 
     // MSIE 11+ 
     else if (nAgt.indexOf('Trident/') != -1) { 
      browser = 'Microsoft Internet Explorer'; 
      version = nAgt.substring(nAgt.indexOf('rv:') + 3); 
     } 
     // Other browsers 
     else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) { 
      browser = nAgt.substring(nameOffset, verOffset); 
      version = nAgt.substring(verOffset + 1); 
      if (browser.toLowerCase() == browser.toUpperCase()) { 
       browser = navigator.appName; 
      } 
     } 
     // trim the version string 
     if ((ix = version.indexOf(';')) != -1) version = version.substring(0, ix); 
     if ((ix = version.indexOf(' ')) != -1) version = version.substring(0, ix); 
     if ((ix = version.indexOf(')')) != -1) version = version.substring(0, ix); 

     majorVersion = parseInt('' + version, 10); 
     if (isNaN(majorVersion)) { 
      version = '' + parseFloat(navigator.appVersion); 
      majorVersion = parseInt(navigator.appVersion, 10); 
     } 

     // mobile version 
     var mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer); 

     // cookie 
     var cookieEnabled = (navigator.cookieEnabled) ? true : false; 

     if (typeof navigator.cookieEnabled == 'undefined' && !cookieEnabled) { 
      document.cookie = 'testcookie'; 
      cookieEnabled = (document.cookie.indexOf('testcookie') != -1) ? true : false; 
     } 

     // system 
     var os = unknown; 
     var clientStrings = [ 
      {s:'Windows 10', r:/(Windows 10.0|Windows NT 10.0)/}, 
      {s:'Windows 8.1', r:/(Windows 8.1|Windows NT 6.3)/}, 
      {s:'Windows 8', r:/(Windows 8|Windows NT 6.2)/}, 
      {s:'Windows 7', r:/(Windows 7|Windows NT 6.1)/}, 
      {s:'Windows Vista', r:/Windows NT 6.0/}, 
      {s:'Windows Server 2003', r:/Windows NT 5.2/}, 
      {s:'Windows XP', r:/(Windows NT 5.1|Windows XP)/}, 
      {s:'Windows 2000', r:/(Windows NT 5.0|Windows 2000)/}, 
      {s:'Windows ME', r:/(Win 9x 4.90|Windows ME)/}, 
      {s:'Windows 98', r:/(Windows 98|Win98)/}, 
      {s:'Windows 95', r:/(Windows 95|Win95|Windows_95)/}, 
      {s:'Windows NT 4.0', r:/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/}, 
      {s:'Windows CE', r:/Windows CE/}, 
      {s:'Windows 3.11', r:/Win16/}, 
      {s:'Android', r:/Android/}, 
      {s:'Open BSD', r:/OpenBSD/}, 
      {s:'Sun OS', r:/SunOS/}, 
      {s:'Linux', r:/(Linux|X11)/}, 
      {s:'iOS', r:/(iPhone|iPad|iPod)/}, 
      {s:'Mac OS X', r:/Mac OS X/}, 
      {s:'Mac OS', r:/(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/}, 
      {s:'QNX', r:/QNX/}, 
      {s:'UNIX', r:/UNIX/}, 
      {s:'BeOS', r:/BeOS/}, 
      {s:'OS/2', r:/OS\/2/}, 
      {s:'Search Bot', r:/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/} 
     ]; 
     for (var id in clientStrings) { 
      var cs = clientStrings[id]; 
      if (cs.r.test(nAgt)) { 
       os = cs.s; 
       break; 
      } 
     } 

     var osVersion = unknown; 

     if (/Windows/.test(os)) { 
      osVersion = /Windows (.*)/.exec(os)[1]; 
      os = 'Windows'; 
     } 

     switch (os) { 
      case 'Mac OS X': 
       osVersion = /Mac OS X (10[\.\_\d]+)/.exec(nAgt)[1]; 
       break; 

      case 'Android': 
       osVersion = /Android ([\.\_\d]+)/.exec(nAgt)[1]; 
       break; 

      case 'iOS': 
       osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer); 
       osVersion = osVersion[1] + '.' + osVersion[2] + '.' + (osVersion[3] | 0); 
       break; 
     } 

     // flash (you'll need to include swfobject) 
     /* script src="//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" */ 
     var flashVersion = 'no check'; 
     if (typeof swfobject != 'undefined') { 
      var fv = swfobject.getFlashPlayerVersion(); 
      if (fv.major > 0) { 
       flashVersion = fv.major + '.' + fv.minor + ' r' + fv.release; 
      } 
      else { 
       flashVersion = unknown; 
      } 
     } 
    } 

    window.jscd = { 
     screen: screenSize, 
     browser: browser, 
     browserVersion: version, 
     browserMajorVersion: majorVersion, 
     mobile: mobile, 
     os: os, 
     osVersion: osVersion, 
     cookies: cookieEnabled, 
     flashVersion: flashVersion 
    }; 
}(this)); 

alert(
    'OS: ' + jscd.os +' '+ jscd.osVersion + '\n' + 
    'Browser: ' + jscd.browser +' '+ jscd.browserMajorVersion + 
     ' (' + jscd.browserVersion + ')\n' + 
    'Mobile: ' + jscd.mobile + '\n' + 
    'Flash: ' + jscd.flashVersion + '\n' + 
    'Cookies: ' + jscd.cookies + '\n' + 
    'Screen Size: ' + jscd.screen + '\n\n' + 
    'Full User Agent: ' + navigator.userAgent 
); 

Alle Kredit geht an Ludwig

1

Um das Betriebssystem auf dem Client-Rechner zu ermitteln, kann Ihr Skript den Wert navigator.appVersion oder navigator.userAgent analysieren. Im Folgenden finden Sie ein einfaches Beispiel für ein Skript, das die Variable OSName so einstellt, dass sie das tatsächliche Client-Betriebssystem widerspiegelt.

// This script sets OSName variable as follows: 
// "Windows" for all versions of Windows 
// "MacOS"  for all versions of Macintosh OS 
// "Linux"  for all versions of Linux 
// "UNIX"  for all other UNIX flavors 
// "Unknown OS" indicates failure to detect the OS 

var OSName="Unknown OS"; 
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows"; 
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS"; 
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX"; 
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux"; 

document.write('Your OS: '+OSName); 

auf Ihrem System dieses Skript liefert das folgende Ergebnis: Ihr Betriebssystem: Windows

+0

Auf Android-Geräten gibt nur Linux –

+0

zurück, weil Android Linux ist)) –

1
I went through various posts and found this two things. 
    1)by ,hecking user agent. 

    /** 
    * Determine the mobile operating system. 
    * This function returns one of 'iOS', 'Android', 'Windows Phone', or 'unknown'. 
    * 
    * @returns {String} 
    */ 
    function getMobileOperatingSystem() { 
     var userAgent = navigator.userAgent || navigator.vendor || window.opera; 

      // Windows Phone must come first because its UA also contains "Android" 
     if (/windows phone/i.test(userAgent)) { 
      return "Windows Phone"; 
     } 

     if (/android/i.test(userAgent)) { 
      return "Android"; 
     } 

     // iOS detection from: http://stackoverflow.com/a/9039885/177710 
     if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) { 
      return "iOS"; 
     } 

     return "unknown"; 
    } 

2. User sniffing 

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

Die Antwort ist nur eine Erweiterung zu Sukrit Kumar ‚s Antwort. Wenn Sie sich auf einem Tizen Gerät befinden, würde die var jscd.os 'Linux' und jscd.mobile 'true' enthalten, da Tizen ein Betriebssystem ist, das auf dem Linux-Kernel basiert. So können Sie feststellen, dass Sie sich auf der Tizen-Plattform befinden .

if (jscd.os == "Linux" && jscd.mobile == true) 
    // You are on Tizen Platform 

Austausch Screenshots der jsFiddle von verschiedenen Geräten ..

Android (Galaxy S5)

enter image description here

Ubuntu 14,04

enter image description here

Tizen (Samsung Z1)

enter image description here

Tizen (Samsung Z3)

enter image description here

Dank.

+0

Vielen Dank. Woher bekommst du den Tizen Emulator? Haben Sie auch Windows Mobile Emulator, um es selbst zu testen? – YumYumYum

+0

Ich habe auf echten Geräten Samsung Z1 und Samsung Z3 getestet. Habe keinen Windows Mobile Emulator .... –

Verwandte Themen