基于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 相关文章推荐
可缩放Reloaded-一个针对可缩放元素的复用组件
Mar 10 Javascript
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
Mar 09 Javascript
十个优秀的Ajax/Javascript实例网站收集
Mar 31 Javascript
javascript getElementsByClassName实现代码
Oct 11 Javascript
jQuery UI Autocomplete 体验分享
Feb 14 Javascript
JS操作图片(增,删,改) 例子
Apr 17 Javascript
网页中可关闭的漂浮窗口实现可自行调节
Aug 20 Javascript
js使用心得分享
Jan 13 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
Sep 01 Javascript
详细谈谈AngularJS的子级作用域问题
Sep 05 Javascript
jQuery实现的无限级下拉菜单功能示例
Sep 12 Javascript
vue计算属性computed的使用方法示例
Mar 13 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
PHP实现MVC开发得最简单的方法――模型
2007/04/10 PHP
php 文件状态缓存带来的问题
2008/12/14 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
Python 流程控制实例代码
2009/09/25 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
基于Django统计博客文章阅读量
2019/10/29 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
比较基础的php面试题及答案-编程题
2012/10/14 面试题
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
EJB与JAVA BEAN的区别
2016/08/29 面试题
预备党员公开承诺书
2014/05/28 职场文书
拔河比赛新闻稿
2015/07/17 职场文书
高三语文教学反思
2016/02/16 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python