vue nuxt判断是pc端还是移动端,分别跳转不同页面
vue nuxt判断是pc端还是移动端,分别跳转不同页面第一版defaule.vue,mounted()中进行判断:if (this.isMobile()) {console.log("手机端");location.replace('xxxx');} else {console.log("pc端");}methods中:isMobile() {let flag = navigator.userAg
·
vue nuxt判断是pc端还是移动端,分别跳转不同页面
版本信息:
一、defaule.vue,mounted()中进行判断:
if (this.isMobile()) {
console.log("手机端");
location.replace('xxxx');
} else {
console.log("pc端");
}
methods中:
isMobile() {
let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)
return flag;
}
有问题,跳转时间比较长;有出现加载两次的现象。
二、使用 middleware中间件
- 在 middleware 下新建 midd.js
export default function ({ isServer, req, redirect, route }) {
let pcOrigin = 'xxxx'
let mobileOrigin = 'xxxx'
let isMobile = (ua) => {
return !!ua.match(/AppleWebKit.*Mobile.*/)
}
let userAgent = req ? req.headers['user-agent'] : navigator.userAgent || ''
console.log(isMobile(userAgent))
return isMobile(userAgent) ? redirect(mobileOrigin + route.fullPath) : redirect(pcOrigin + route.fullPath)
// 使用redirect 重定向到外链需要加上前缀:http / https
}
- 在 nuxt.config.js加上对应配置
router:{
middleware: 'midd'
},
参考地址:https://www.wandouip.com/t5i380032/
2020.08.11更新:
在本地是正常的,但是放在线上会出现死循环,所以采用了第三种方式
三
- 新建一个isMobile.js文件,路径自选,我的路径是/static/js/isMobile.js
(function() {
console.log("判断移动端");
var sUserAgent = navigator.userAgent.toLowerCase();
if (/ipad|iphone|midp|rv:1.2.3.4|ucweb|android|windows ce|windows mobile/.test(sUserAgent)) {
console.log("移动端");
//跳转移动端页面
window.location.replace("xxxx");//跳转后没有后退功能
} else {
console.log("PC端");
}
})();
- 在nuxt.config.js加上对应配置
head: {
script:[
{src:'js/isMobile.js'},
]
},
- 重新启动项目可以看到效果
更多推荐
已为社区贡献3条内容
所有评论(0)