基于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为搜索栏增加tag提示
Jun 22 Javascript
JS继承--原型链继承和类式继承
Apr 08 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
May 25 Javascript
在Node.js应用中使用Redis的方法简介
Jun 24 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
Jul 20 Javascript
js实现点击向下展开的下拉菜单效果代码
Sep 01 Javascript
JavaScript学习笔记之数组随机排序
Mar 23 Javascript
使用mint-ui开发项目的一些心得(分享)
Sep 07 Javascript
canvas基础绘制-绚丽倒计时的实例
Sep 17 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
Sep 19 Javascript
vue如何将v-for中的表格导出来
May 07 Javascript
Vue引入sass并配置全局变量的方法
Jun 27 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 快速生成 Flash 动画的方法
2007/03/06 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
php判断当前操作系统类型
2015/10/28 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
JavaScript易错知识点整理
2016/12/05 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
js实现简易计算器小功能
2020/11/18 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
Python实现文件复制删除
2016/04/19 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
python使用pygame框架实现推箱子游戏
2018/11/20 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
使用K.function()调试keras操作
2020/06/17 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
小学生美德少年事迹
2014/02/02 职场文书
幼儿园秋游感想
2014/03/12 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL