【发布时间】:2020-05-19 19:48:07
【问题描述】:
目标:检测用户是否在 iPhone/iPad/Android(移动设备)上并根据该条件运行一些代码
问题/发生了什么:它似乎检测到 android,但没有检测到 iPhone/iPod。
我尝试过的: 我正在使用 Chrome 开发工具对此进行测试。我从 Chrome Devtools 中选择用户代理,例如:Chrome - iPhone 或 Chrome - Android Mobile。
我试过调试这个,我得到: uagent = "mozilla/5.0 (iphone; cpu iphone os 9_1 like mac os x) applewebkit/601.1.46 (khtml, like gecko) version/9.0 mobile/13b137 safari/601.1"
但它完全跳过了条件
我还查看了不同的文章,我的匹配条件看起来是正确的。事实上,我从一篇 SO 文章中得到了这个。但它在 W3Schools、mozilla 文档等上看起来是一样的。 我还尝试将代码移出服务方法并移入组件本身,但这没有帮助。我记得测试过它并且它在某个时候工作(使用 iPhone 作为用户代理)但不确定发生了什么变化。
Angular/TypeScript:
this.isMobile = this.securityService.isUserAgentMobile();
isUserAgentMobile(): boolean {
var isMobile = false;
var uagent = navigator.userAgent.toLowerCase();
if (uagent.match(/iPad|iPhone|android/)) {
console.log("user agent is mobile!");
isMobile = true;
}
return isMobile;
}
【问题讨论】:
-
你用的是什么型号的iPhone,浏览器是什么版本,可以分享一下
-
@ZainZafar 。我在网络条件下从 Chrome 的 DevTools (F12) 中选择它。它的字面意思是“Chrome - iPhone”。我会附上截图
-
小写字符串永远不会匹配包含大写字母的单词。
-
@str 名称签出 :)。还有 facepalm ,就是这样!这么明显,不知道我怎么错过了。谢谢你。随意提出作为答案和错误选择。
标签: javascript typescript user-agent