基于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 相关文章推荐
Three.js源码阅读笔记(光照部分)
Dec 27 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
再探JavaScript作用域
Sep 24 Javascript
JQuery实现动态适时改变字体颜色的方法
Mar 10 Javascript
浅谈在js传递参数中含加号(+)的处理方式
Oct 11 Javascript
Node.js批量给图片加水印的方法
Nov 15 Javascript
IntersectionObserver API 详解篇
Dec 11 Javascript
javascript事件的绑定基础实例讲解(34)
Feb 14 Javascript
JavaScript实现动态增删表格的方法
Mar 09 Javascript
node.js中axios使用心得总结
Nov 29 Javascript
vue项目中实现图片预览的公用组件功能
Oct 26 Javascript
three.js搭建室内场景教程
Dec 30 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
php中函数前加&amp;符号的作用分解
2014/07/08 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
2014/01/24 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
关于TypeScript中import JSON的正确姿势详解
2017/07/25 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
Python绘图实现显示中文
2019/12/04 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
Nike墨西哥官网:Nike MX
2020/08/30 全球购物
一年级学生评语大全
2014/04/21 职场文书
关于安全演讲稿
2014/05/09 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
分居协议书范本
2014/11/03 职场文书
公司2014年度工作总结
2014/12/10 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
婚姻出轨保证书
2015/05/08 职场文书
故意伤害辩护词
2015/05/21 职场文书
电影复兴之路观后感
2015/06/02 职场文书
葬礼主持词
2015/07/02 职场文书
学困生转化工作总结
2015/08/13 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书