javascript - 移动重定向代码发送到错误的位置
问题描述
我试图弄清楚为什么我的代码将桌面浏览器发送到移动站点。无论我在桌面上使用什么浏览器,它都会发送到移动网站。
我也试过删除 else 语句,但不高兴,仍然是同样的问题。
如果有人能指出我的错误,我将不胜感激。非常感谢
$(document).ready(function() {
var isMobile = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/);
if (isMobile) {
// User-Agent is IPhone, IPod, IPad, Android or BlackBerry
document.location.href = 'http://m.domain.co.uk';
} else {
document.location.href = 'https://domain.co.uk';
}
});
解决方案
实际上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
根据匹配与否返回。
推荐阅读
- npm - Artifactory npm 存储库验证用户名和密码
- tensorflow - ``将 pb 转换为 tflite SSD_MobileNet_V2 时出错 - Windows 10
- r - 让 pandoc 与 R 一起使用
- excel - 选择时更改单元格颜色,离开后返回原始颜色
- swift - 跨类传递对象时未正确设置对象
- php - 如何在codeigniter中强制下载zip文件
- android - Intent.ACTION_OPEN_DOCUMENT 在 Android Q 中不起作用
- python - 如何在 Orange Pi Zero 上提高 OPi.GPIO 的速度?
- google-api - Google Admin SDK Reports v1 活动:对 applicationName 组的观察中断
- docker - Docker 容器自动修复 Kubernetes 适用于一个实例吗?