基于VUE实现判断设备是PC还是移动端

 更新时间:2020年07月03日 09:38:11   作者:奔跑的太阳花  
这篇文章主要介绍了基于VUE实现判断设备是PC还是移动端,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

实际开发工作中会经常遇到一个需求,就是判断当前登录网页的设备是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 类型。

根据当前设备的视口宽度判断是否是移动端设备。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)

    解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)

    这篇文章主要介绍了解决vue数据不实时更新的问题(数据更改了,但数据不实时更新),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 搭建Vue3+Vite+Ts脚手架的示例代码

    搭建Vue3+Vite+Ts脚手架的示例代码

    本文介绍了Vue3+Vite+Ts搭建脚手架的实现,步骤包括创建项目、选择技术栈、安装依赖及运行项目,旨在为开发者提供一个简易快速的搭建流程,感兴趣的可以了解一下
    2024-11-11
  • vuejs使用$emit和$on进行组件之间的传值的示例

    vuejs使用$emit和$on进行组件之间的传值的示例

    本篇文章主要介绍了vuejs使用$emit和$on进行组件之间的传值的示例,具有一定的参考价值,有兴趣的可以了解一下
    2017-10-10
  • vue3 elementPlus table实现列宽可拖拽功能

    vue3 elementPlus table实现列宽可拖拽功能

    这篇文章主要介绍了vue3 elementPlus table实现列宽可拖拽功能,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Vuex模块化与持久化深入讲解

    Vuex模块化与持久化深入讲解

    在实际项目开发过程中,如果公共数据比较多我们会使用vuex做公共状态管理,但是在对浏览器进行刷新操作的时候,会导致vuex内的数据丢失,这种情况有些时候是没问题的,但是有的时候我们需要某些数据可以持久化的保存,这样就需要做对应的处理
    2023-01-01
  • vue2滚动条加载更多数据实现代码

    vue2滚动条加载更多数据实现代码

    本篇文章主要介绍了vue2滚动条加载更多数据实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • vue3使用Facebook嵌入式视频播放器API方法详解

    vue3使用Facebook嵌入式视频播放器API方法详解

    这篇文章主要为大家介绍了vue3使用Facebook嵌入式视频播放器API方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 浅谈vue-router 路由传参的方法

    浅谈vue-router 路由传参的方法

    这篇文章主要介绍了浅谈vue-router 路由传参的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Vue超详细讲解重试机制示例

    Vue超详细讲解重试机制示例

    这篇文章主要介绍了Vue重试机制示例,重试指的是当加载出错时,有能力重新发起加载组件的请求。异步组件加载失败后的重试机制,与请求服务端接口失败后的重试机制一样
    2023-01-01
  • vue实现记事本功能

    vue实现记事本功能

    这篇文章主要为大家详细介绍了vue实现记事本功能,记事本可以进行添加删除事件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06

最新评论