2016-11-01 4 views
1

У меня есть страница, где мне нужно определить, какая платформа она есть, и если мои приложения совместимы для этой платформы, если она совместима, то я использую native, иначе я использую внешние сторонние инструменты.Как я узнаю, на какой платформе это?

using whichbrowser.net Я получаю имя браузера, но как я могу определить, какая это архитектура? это ПК или планшет или смартфон, как получить это значение?

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

Вам будет лучше использовать обнаружение функций, а не обнаружение браузера/платформы. Любой метод проверки вашего браузера может быть обманут простым изменением настроек. – Archer

ответ

2

Ludwig дал очень подходящий ответ на этот вопрос в этом answer. Это один из лучших и наиболее подходящих способов проверки, находится ли пользователь на мобильном телефоне или какой он использует.

проверить его 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 
); 

Все Заслуга Ludwig

1

Для определения операционной системы на клиентском компьютере, ваш сценарий может анализировать значение navigator.appVersion или navigator.userAgent. Ниже приведен простой пример скрипта, который устанавливает переменную OSName для отображения фактической клиентской ОС.

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

На вашей системе, этот сценарий дает следующий результат: Ваша ОС: Windows

+0

На устройствах Android просто возвращается Linux –

+0

, потому что у Android есть Linux)) –

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

Ответ просто Расширение Ответ Sukrit Kumar «s. Когда вы находитесь на устройстве Tizen, у var jscd.os будет «Linux», а jscd.mobile будет содержать «true», поскольку Tizen - это операционная система, основанная на ядре Linux. Таким образом, вы можете определить, что вы находитесь на платформе Tizen ,

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

Sharing скриншоты jsFiddle от различных устройств ..

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

Спасибо.

+0

Спасибо. Где вы получаете эмулятор Tizen? у вас также есть мобильный эмулятор Windows, чтобы проверить его сам? – YumYumYum

+0

Я тестировал на реальных устройствах Samsung Z1 и Samsung Z3. У меня нет мобильного эмулятора Windows .... –

Смежные вопросы