我试图弄清楚为什么我的代码将桌面浏览器发送到移动网站。我在桌面上使用的浏览器,它发送到移动网站。
我也试过删除else语句,但没有快乐,仍然是同样的问题。
如果有人能指出我的错误,我将不胜感激。非常感谢
undefined
答案 0 :(得分:3)
实际上navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/);
正在返回null
而不是true/false
。
要匹配正则表达式,请创建一个RegExp
对象,并使用test()
方法。
var mobile = new RegExp(/(iPhone|iPod|iPad|Android|BlackBerry)/);
if(mobile.test(navigator.userAgent)){
console.log("Mobile");
// User-Agent is IPhone, IPod, IPad, Android or BlackBerry
}else{
console.log("Desktop");
// Any other useragent.
}
str.match()
的问题是,当找不到匹配时,它会返回null
&找到匹配项时array of matches
。因此,无法使用if/else
直接处理结果。您需要使用typeof
检查返回类型,然后执行相应的操作。
虽然RegExp.test()
非常直接并且根据匹配与否返回true/false
。