基于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 相关文章推荐
js设置控件的隐藏与显示的两种方法
Aug 21 Javascript
图解Sublime Text3使用技巧
Dec 21 Javascript
jquery插件之文字间歇自动向上滚动效果代码
Feb 25 Javascript
javascript日期比较方法实例分析
Jun 17 Javascript
全面了解javascript中的错误处理机制
Jul 18 Javascript
总结在前端排序中遇到的问题
Jul 19 Javascript
js替换字符串中所有指定的字符(实现代码)
Aug 17 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
Dec 22 Javascript
vue中slot(插槽)的介绍与使用
Nov 12 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
May 12 Javascript
jQuery实现图片切换效果
Oct 19 jQuery
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
PHP $_FILES函数详解
2011/03/09 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
PHP attributes()函数讲解
2019/02/03 PHP
关于javascript 回调函数中变量作用域的讨论
2009/09/11 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
JavaScript中连接操作Oracle数据库实例
2015/04/02 Javascript
理解javascript封装
2016/02/23 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
Node 模块原理与用法详解
2020/05/13 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
Python选课系统开发程序
2016/09/02 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
python实现滑雪游戏
2020/02/22 Python
Pandas之缺失数据的实现
2021/01/06 Python
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
专科毕业生求职简历的自我评价
2013/10/12 职场文书
会计出纳岗位职责
2013/12/25 职场文书
中文教师求职信
2014/02/22 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
学校运动会霸气口号
2014/06/07 职场文书
计算机毕业生求职信
2014/06/10 职场文书
学校搬迁方案
2014/06/15 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书