基于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 相关文章推荐
IE本地存储userdata的一个bug说明
Jul 01 Javascript
使用Js让Html中特殊字符不被转义
Nov 05 Javascript
更快的异步执行(setTimeout多浏览器)
Aug 12 Javascript
jQuery插件formValidator实现表单验证
May 23 Javascript
jQuery的ready方法实现原理分析
Oct 26 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
JS原型与原型链的深入理解
Feb 15 Javascript
vue使用axios跨域请求数据问题详解
Oct 18 Javascript
ajax请求data遇到的问题分析
Jan 18 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
Jan 24 jQuery
Node.js API详解之 module模块用法实例分析
May 13 Javascript
Vue使用轮询定时发送请求代码
Aug 10 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
js验证表单第二部分
2006/11/25 Javascript
javascript document.compatMode兼容性
2010/02/23 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
酒店服务与管理毕业生求职信
2013/11/02 职场文书
食品业务员岗位职责
2014/03/18 职场文书
在职证明书模板
2015/06/15 职场文书
环保证明
2015/06/23 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python