基于VUE实现判断设备是PC还是移动端


Posted in Javascript onJuly 03, 2020

实际开发工作中会经常遇到一个需求,就是判断当前登录网页的设备是PC还是移动,要求PC端和移动端显示的是不同的网页内容。

那么我们就需要对当前登录设备进行判断。

使用 navigator.userAgent 字符串检测

我是在PC端开发完接到要做移动端的需求,而且移动端只有一个页面,我就统一放在了一个文件夹内。
首先在 app.vue 文件内,判断当前设备是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;
  }
},
mounted: {
 if(this.isMobile) {
  alert("移动端");
  this.$router.replace('/pc_index');
 }else {
  alert("pc端");
  this.$router.replace('/m_index');
 }
}

接下来就略微介绍一下这个方法,其中用到了 navigator.userAgent 。

这个方法会返回一个只读的字符串,声明了浏览器在发送 http 请求时的用户代理头的值。例如:

<script>
 document.write("用户代理:" + navigator.userAgent)
</script>

// pc端输出结果:
用户代理: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36
// 移动端输出结果:
用户代理: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1

.match 方法用于在字符串内检索指定的值,或找到一个或多个正则表达式的匹配,返回值是检索到的值。
类似的方法还有 indexOf()、laseIndexOf(),但是这两个方法返回的是匹配到的值的位置。
所以在判断方法中使用.match方法匹配所有的移动端型号,最后加的 /i 是表示不区分大小写。

使用 window.matchMedia() 检测

也就是利用媒体查询的方式进行判断。

window.matchMedia 方法会返回一个新的 mediaQueryList 对象,表示指定的媒体查询字符串解析后的结果。例如:

var result = window.matchMedia("(min-width: 400px)").matches;
console.log(result) //true

window.matchMedia 方法会返回两个参数,一个是 media,就是查询的语句内容。另一个是 matches,是返回的结果,为 boolean 类型。

根据当前设备的视口宽度判断是否是移动端设备。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery Ajax请求代码(2)
Jan 07 Javascript
Jquery插件之打造自定义的select标签
Nov 30 Javascript
关于递归运算的顺序测试代码
Nov 30 Javascript
JavaScript中的onerror事件概述及使用
Apr 01 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
Oct 12 Javascript
js运动应用实例解析
Dec 28 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
Jan 04 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
Jul 22 Javascript
详解使用webpack构建多页面应用
Dec 21 Javascript
element ui 对话框el-dialog关闭事件详解
Feb 26 Javascript
element-ui 设置菜单栏展开的方法
Aug 22 Javascript
vue.js封装switch开关组件的操作
Oct 26 Javascript
JavaScript如何判断对象有某属性
Jul 03 #Javascript
详解element-ui动态限定的日期范围选择器代码片段
Jul 03 #Javascript
JS常见错误(Error)及处理方案详解
Jul 02 #Javascript
vue过滤器实现日期格式化的案例分析
Jul 02 #Javascript
Vue使用预渲染代替SSR的方法
Jul 02 #Javascript
node运行js获得输出的三种方式示例详解
Jul 02 #Javascript
基于小程序请求接口wx.request封装的类axios请求
Jul 02 #Javascript
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
JavaScript判断数组类型的方法
2019/10/23 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
python 切换root 执行命令的方法
2019/01/19 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
python manage.py runserver流程解析
2019/11/08 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
办公室内勤工作职责
2013/12/11 职场文书
建筑系毕业生自我鉴定
2014/01/24 职场文书
揭牌仪式主持词
2014/03/19 职场文书
企业精神口号
2014/06/11 职场文书
2015元旦标语横幅
2014/12/09 职场文书
教师个人总结范文
2015/02/11 职场文书
中秋联欢会主持词
2015/07/04 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
js实现上传图片到服务器
2021/04/11 Javascript