2012-08-13 182 views
9

是否有方法使用javascript獲取移動設備的名稱(例如「John的iPhone」)?從javascript獲取(移動)設備名稱


也許我不是很清楚......我的意思是不是無論是在iPhone,iPad等,但在「設備名稱」 - 例如,它可以是「約翰的iPhone」。

+0

取決於移動設備所運行的瀏覽器,但你要知道,如果它是一個iPhone或Android設備或者你究竟需要哪個名字? – 2012-08-13 08:13:40

+0

唯一可以得到的是User-Agent – 2012-08-13 08:19:42

+0

這是一個使用'WURFL.js'的鏈接,免費http://www.smashingmagazine.com/2014/07/01/server-side-device-detection- with-javascript/ – Pierre 2015-03-11 06:53:30

回答

10

你不能在本地瀏覽器中運行一個Web應用程序做到這一點通過JavaScript - JavaScript的一般不具有訪問自己的個人識別數據。

一種可能的方式是使用可能有API訪問設備名稱的框架,如PhoneGap。但是,您只能通過應用商店部署您的網站,所以根據您的使用情況,這可能會非常有限。

10

最好的辦法是使用用戶代理:

例如,

var ua = navigator.userAgent, 
browser = { 
    iPad: /iPad/.test(ua), 
    iPhone: /iPhone/.test(ua), 
    Android4: /Android 4/.test(ua) 
}; 

這會給你訪問之類的東西if(browser.iPad) { /* do stuff */ }

+1

一個很好的簡潔和可擴展的答案,謝謝。 'device'將是變量的一個更合適的名稱。 – Rebs 2016-08-08 01:40:38

1

我正在使用嵌入式掃描儀的移動設備。爲了能夠使用一些不同設備的JavaScript庫並避免與不同製造商(Zebra,Honeywell,Datalogic,iOs等等)的庫衝突,我需要想出一種方法來識別每個設備,這樣我就可以加載適當的庫,這就是我想出的。享受

getDeviceName: function() { 
    var deviceName = ''; 

    var isMobile = { 
     Android: function() { 
      return navigator.userAgent.match(/Android/i); 
     }, 
     Datalogic: function() { 
      return navigator.userAgent.match(/DL-AXIS/i); 
     }, 
     Bluebird: function() { 
      return navigator.userAgent.match(/EF500/i); 
     }, 
     Honeywell: function() { 
      return navigator.userAgent.match(/CT50/i); 
     }, 
     Zebra: function() { 
      return navigator.userAgent.match(/TC70|TC55/i); 
     }, 
     BlackBerry: function() { 
      return navigator.userAgent.match(/BlackBerry/i); 
     }, 
     iOS: function() { 
      return navigator.userAgent.match(/iPhone|iPad|iPod/i); 
     }, 
     Windows: function() { 
      return navigator.userAgent.match(/IEMobile/i); 
     }, 
     any: function() { 
      return (isMobile.Datalogic() || isMobile.Bluebird() || isMobile.Honeywell() || isMobile.Zebra() || isMobile.BlackBerry() || isMobile.Android() || isMobile.iOS() || isMobile.Windows()); 
     } 
    }; 

    if (isMobile.Datalogic()) 
     deviceName = 'Datalogic'; 
    else if (isMobile.Bluebird()) 
     deviceName = 'Bluebird'; 
    else if (isMobile.Honeywell()) 
     deviceName = 'Honeywell'; 
    else if (isMobile.Zebra()) 
     deviceName = 'Zebra'; 
    else if (isMobile.BlackBerry()) 
     deviceName = 'BlackBerry'; 
    else if (isMobile.iOS()) 
     deviceName = 'iOS'; 
    else if ((deviceName == '') && (isMobile.Android())) 
     deviceName = 'Android'; 
    else if ((deviceName == '') && (isMobile.Windows())) 
     deviceName = 'Windows'; 

    if (deviceName != '') { 
     consoleLog('Devices information deviceName = ' + deviceName); 
     consoleLog('Devices information any = ' + isMobile.any()); 
     consoleLog('navigator.userAgent = ' + navigator.userAgent); 
    } 

    return deviceName; 
}, 

,這是它如何被使用的例子:

initializeHandheldScanners: function() { 
    if (DeviceCtrl.getDeviceName() == 'Zebra') 
     DeviceCtrl.initializeSymbolScanner(); 

    if (DeviceCtrl.getDeviceName() == 'Honeywell') 
     DeviceCtrl.initializeHoneywellScanner(); 

    if (DeviceCtrl.getDeviceName() == 'Datalogic') 
     DeviceCtrl.initializeDatalogicScanner(); 
}, 

你可以說感謝科裏LaViska。我根據他的工作做到了這一點。這裏是鏈接,如果你想了解更多

https://www.abeautifulsite.net/detecting-mobile-devices-with-javascript