目标: 检测用户是否在iPhoneiPadAndroid(移动设备)上,并根据该条件运行一些代码。
问题发生了什么?: 似乎能检测到安卓系统,但检测不到iPhoneiPod。
我尝试过什么。我用Chrome Devtools进行测试 I am testing this with Chrome devtools. 我从Chrome Devtools中选择了用户代理,类似于:Chrome - iPhone ,或者Chrome - Android。Chrome - iPhone , 或Chrome - Android Mobile.
我试着调试了一下,得到:uagent = "mozilla5.0 (iphone; cpu iphone os 9_1 like mac os x) applewebkit601.1.46 (khtml, like gecko) version9.0 mobile13b137 safari601.1" 。
然而它完全跳过了这个条件
我也看了不同的文章,我的匹配条件看起来是正确的。事实上,我是从SO的一篇文章中得到的。但在W3Schools、mozilla文档等上看起来都是一样的。我也试过把代码从服务方法中移到组件本身,但没有帮助。我记得我测试过这个,它在某一点上是可以工作的(用iPhone作为useragent),但不知道是什么改变了。
AngularTypeScript:
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;
}
因为它设置为小写,所以匹配也必须是小写。
var uagent = navigator.userAgent.toLowerCase();
if (uagent.match(/ipad|iphone|android/))