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

Getting (mobile) device name from javascript

本文关键字:设备名 移动 javascript 获取      更新时间:2023-09-26

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


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

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

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

最好的办法是使用用户代理:

例如

const ua = navigator.userAgent
const device = {
  iPad: /iPad/.test(ua),
  iPhone: /iPhone/.test(ua),
  Android4: /Android 4/.test(ua)
}

该对象将允许您编写漂亮的条件逻辑,例如if(device.iPad) { /* do stuff */ }

我正在使用带有嵌入式扫描仪的移动设备。 为了能够使用不同设备的一些JavaScript库,并避免与不同制造商的库(斑马技术,霍尼韦尔,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();
},

你可以感谢科里·拉维斯卡。 我是根据他的工作来做的。 如果您想了解更多信息,这里是链接

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

您可以使用

以下代码段:

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());
如果要

检索移动设备名称,可以使用以下代码片段:

navigator.userAgentData
      .getHighEntropyValues([
        "architecture",
        "model",
        "platform",
        "platformVersion",
        "fullVersionList"
      ])
      .then((ua) => {
        const model = ua["model"];
        if (model) console.log("Phone: " + model);
      });

请注意,此代码片段仅适用于安卓设备。

下面是一些可能作为输出获得的示例设备名称:

  • 电话: 波科F1
  • 手机: 像素 5
  • 电话: SM-G955U

您可以在此处找到此代码的示例实现。

JavaScript navigator对象用于浏览器检测,它可以用来获取浏览器信息,如appNameappCodeNameuserAgent等。在这里我们使用属性userAgent,它将返回一个字符串,从中我们可以找到不同设备的匹配项,例如 iPhoneWindows等,并存储在另一个名为 device 的对象中。通过循环访问对象,我们可以检查属性,该属性将为true,将打印在页面上。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Device</title>
</head>
<body>
    <script>
        const UserAgent = navigator.userAgent
        const device = {
            iPad: /iPad/.test(UserAgent),
            iPhone: /iPhone/.test(UserAgent),
            Android: /Android/.test(UserAgent),
            windows: /Windows/.test(UserAgent)
        }
        for(dev in device){
            if(device[dev])
            document.writeln("You are using " + dev);
        }
        
    </script>
</body>
</html>

它可以帮助您识别用户的设备:-)