使用 Javascript 或 JQuery 检测手机

Detect Mobile PHONE with Javascript or JQuery

本文关键字:检测 手机 JQuery Javascript 使用      更新时间:2023-09-26

我对平板电脑或移动设备不感兴趣。仅当用户使用手机访问页面时。

我不是在寻找100%完美的东西。但最好的努力会很好。如果我显示短信"a"标签链接而您不在手机上......这不是世界末日,但我想尽我所能。

关于如何专门尝试过滤手机的任何想法,即使它不是 100% 完美?

谢谢

也许你可以采取几种方法 - 两者都会做出大量的假设,充其量是不可靠的!

第一种方法是响应式媒体查询。您可以假设移动电话的屏幕尺寸大于 x 且小于 y。例如:

@media only screen and (min-width: 320px) and (max-width: 600px) {}

我会对此进行改进,以检查高度,并找到一些有关常见设备尺寸的统计数据,以便在其中放置合理的断点。您还需要考虑设备方向,当设备面向横向时,它将比平时更宽。

另一个选项是使用用户代理字符串。苹果和安卓设备都特别声明了它是否是该设备的移动版本。在iOS上,您可以查找短语" iphone"。在安卓上,你可以寻找"移动野生动物园"。Windows Phone 和其他设备可能有类似的检测,您需要使用模拟器来检查每个 UA 字符串,然后构造合适的正则表达式。

如果您特别关注设备处理电话操作的能力,最后一种可能性可能是针对电话号码运行检测。

在页面上创建一个包含电话号码的元素。在 iOS 中(在其他平台上可能类似),这将被修改,以便它添加一个自动 href 和 tel: 然后是您的号码。您可以在屏幕上绘制此元素,查看号码是否自动格式化,如果是,则假定为手机。我想iPad也会这样做,但是如果您启用了短信转发,iPad也将允许您发送短信。

如果您想为最终用户操作视图,我建议您在服务器端执行此操作,但是我编写了一个小型JS库,该库不久前可以实现这种检查 - 看看:https://github.com/dj10dj100/what_browser

除了其他事情,您还可以使用 js 检查浏览器是否是移动设备: if(what.device.isMobile() == true){ //Mobile device }

if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
 // some code..
}