从javascript获取(移动)设备名称

时间:2012-08-13 08:10:31

标签: javascript mobile-website

有没有办法使用javascript获取移动设备的名称(例如“John的iPhone”)?


也许我不是很清楚......我的意思不是它是iPhone,iPad等,而是“设备名称” - 例如它可以是“John的iPhone”。

4 个答案:

答案 0 :(得分:11)

您最好的选择是使用用户代理:

e.g。

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

这样您就可以访问if(browser.iPad) { /* do stuff */ }

等内容

答案 1 :(得分:10)

对于在本机浏览器中运行的网络应用,您无法通过javascript执行此操作 - javascript通常无法访问此个人识别数据。

一种可能的方法是使用像PhoneGap这样的框架,它可能有一个API来访问设备名称。但是,您只能通过应用商店部署您的网站,因此根据您的使用情况,这可能非常有限。

答案 2 :(得分: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();
},

你可以向Cory LaViska表示感谢。我是根据他的工作做到的。如果您想了解更多信息,可以使用以下链接

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

答案 3 :(得分:0)

您可以使用以下代码段:

const getUA = () => {
    let device = "Unknown";
    const ua = {
        "Generic Linux": /Linux/i,
        "Android": /Android/i,
        "BlackBerry": /BlackBerry/i,
        "Bluebird": /EF500/i,
        "Chrome OS": /CrOS/i,
        "Datalogic": /DL-AXIS/i,
        "Honeywell": /CT50/i,
        "iPad": /iPad/i,
        "iPhone": /iPhone/i,
        "iPod": /iPod/i,
        "macOS": /Macintosh/i,
        "Windows": /IEMobile|Windows/i,
        "Zebra": /TC70|TC55/i,
    }
    Object.keys(ua).map(v => navigator.userAgent.match(ua[v]) && (device = v));
    return device;
}

console.log(getUA());