基于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 相关文章推荐
在JavaScript中遭遇级联表达式陷阱
Mar 08 Javascript
javascript中的onkeyup和onkeydown区别介绍
Apr 28 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
Jul 09 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
Feb 23 Javascript
javascript十六进制及二进制转化的方法
May 06 Javascript
javascript编程异常处理实例小结
Nov 30 Javascript
JQuery validate插件验证用户注册信息
May 11 Javascript
Node.js的npm包管理器基础使用教程
May 26 Javascript
JavaScript中两个字符串的匹配
Jun 08 Javascript
React中的render何时执行过程
Apr 13 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
微信小程序仿朋友圈发布动态功能
Jul 15 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
我的论坛源代码(五)
2006/10/09 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
js数组去重的hash方法
2016/12/22 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
Python自动扫雷实现方法
2015/07/25 Python
python读取oracle函数返回值
2016/07/18 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
python浪漫表白源码
2019/04/05 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
Python函数基本使用原理详解
2020/03/19 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
python如何绘制疫情图
2020/09/16 Python
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
致接力运动员广播稿
2014/02/17 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python