从 javascript 获取(移动)设备名称
Getting (mobile) device name from javascript
有没有办法使用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
对象用于浏览器检测,它可以用来获取浏览器信息,如appName
、appCodeName
、userAgent
等。在这里我们使用属性userAgent,它将返回一个字符串,从中我们可以找到不同设备的匹配项,例如 iPhone
,Windows
等,并存储在另一个名为 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>
它可以帮助您识别用户的设备:-)
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- XMLHttpRequest在移动设备上的chrome上不起作用
- YouTube作为弹出窗口在桌面版本上播放,但不在移动设备上播放
- 检测非移动页面上的移动设备屏幕宽度和高度
- 下拉式父菜单链接在移动设备中不起作用
- 展开移动设备上的折叠菜单,同时在桌面上保持悬停
- 从安卓设备将图像上传到服务器时,文件扩展名错误
- 我怎么能把这个代码放在移动设备上运行
- 使用Modernizr检测移动设备最可靠的方法是什么
- 选择标记onchange不适用于移动设备
- 我发现了一些只在移动设备上可见的垃圾邮件链接,我可以'找不到包含此垃圾邮件链接的脚本的位置
- 在移动设备中自动播放视频
- 替换移动设备的链接文本
- 链接don'由于Javascript悬停效果,无法在移动设备上工作
- jQuery-适用于移动设备的多级菜单
- Video.js+移动设备上的谷歌IMA:'点击'导致错误的事件
- 如果设备是移动设备,如何更改网页上的链接?HTML/Javascript/CSS.
- 在移动设备上移动元素
- 如果用户的设备是移动设备,如何停止特定的外部javascript文件