基于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实现的一个Flash滚动轮换显示图片代码生成器
Mar 14 Javascript
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
Nov 24 Javascript
基于jquery的二级联动菜单实现代码
Apr 25 Javascript
JavaScript中的prototype.bind()方法介绍
Apr 04 Javascript
浅析JS异步加载进度条
May 05 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
Jun 12 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
Aug 23 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
Feb 10 Javascript
Vue路由跳转问题记录详解
Jun 15 Javascript
vue组件间通信子与父详解(二)
Nov 07 Javascript
关于JSON解析的实现过程解析
Oct 08 Javascript
在vue中封装方法以及多处引用该方法详解
Aug 14 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
关于Python 3中print函数的换行详解
2017/08/08 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
教学质量评估实施方案
2014/03/17 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
工作经历证明书范文
2014/11/02 职场文书
2015年市场部工作总结
2015/04/30 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书