判断iOS、Android以及PC端的示例代码


Posted in Javascript onNovember 15, 2018

前言

我们在做移动端时,在跨平台、浏览器、移动设备兼容的时候,要根据设备、浏览器做特定调整,想起用navigator.userAgent来对浏览器类型进行判断,查了点资料,在这里总结下

还有一个就是移动端的缩放问题,在meta标签中进行设置,对部分浏览器进行强制性的限制

1.navigator的一些常用属性

navigator为window对象的一个属性,指向了一个包含浏览器相关信息的对象

navigator.appVersion 浏览器的版本号
navigator.language 浏览器使用的语言
navigator.userAgent 浏览器的userAgent信息

其中userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。

2.较常见的ios端、Android端及PC端的判断

简单点的

/* 判断浏览器类型 */
let userAgent = navigator.userAgent;
/* 判断手机型号 */
let app = navigator.appVersion;
/* Android 终端 */
let isAndroid = userAgent.indexOf('Android');
/* ios终端 */
let isMac = !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);

封装性的

/* 判断各类型方法 */
const browser = {
 version: function() {
  const userAgent = navigator.userAgent;
  return {
   /* 判断是否是ios */
   ios: !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
   /* 判断是否是Android */
   android: userAgent.indexOf('Android') > -1 || userAgent.indexOf('Adr') > -1,

   /* 判断是否是移动端 */
   mobilePhone: !!userAgent.match(/AppleWebKit.*Mobile.*/),

   /* IE内核 */
   trident: userAgent.indexOf('Trident') > -1,
   /* opera内核 */
   presto: userAgent.indexOf('Presto') > -1,
   /* 苹果、谷歌内核 */
   webkit: userAgent.indexOf('AppleWebKit') > -1,
   /* 火狐内核 */
   gecko: userAgent.indexOf('Gecko') > -1 && userAgent.indexOf('KHTML') == -1,


   /* 判断是否是IPone手机或者QQHD浏览器 */
   iphone: userAgent.indexOf('iPhone') > -1,
   /* 判断是否是iPad */
   iPad: userAgent.indexOf('iPad') > -1,

   /* 判断是否是web应用程序(能够让用户完成某些特定任务的网站),没有头部和底部 */
   webApp: userAgent.indexOf('Safari'),
   /* 是否是微信 */
   weixin: userAgent.indexOf('MicroMessenger'),
   /* QQ */
   QQ: userAgent.match(/\sQQ/i) == ' qq',
  }
 }(),
 /* 判断浏览器使用的语言:navigator.language除IE浏览器外的浏览器使用的语言, 
 * navigator.browserLanguageIE浏览器使用的语言 
 */
 browserLanguage: (navigator.language || navigator.browserLanguage).toLowerCase()
};
if(browser.version.ios || browser.version.android || browser.version.mobilePhone) {
 console.log('是移动端');
}

3.meta标签设置

如对浏览器进行强制全屏的设置(UC全屏),webapp模式等

<meta charset="UTF-8">
<!-- 视图窗口,移动端特属的标签 -->
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no">
<!-- 避免IE使用兼容模式 -->
<meta http-equiv="x-ua-compatible" content="IE=edge">
<!-- uc强制竖屏 -->
<meta name="screen-orientation" content="portrait">
<!-- QQ强制竖屏 -->
<meta name="x5-orientation" content="portrait">
<!-- UC强制全屏 -->
<meta name="full-screen" content="yes">
<!-- QQ强制全屏 -->
<meta name="x5-fullscreen" content="true">
<!-- UC应用模式 -->
<meta name="browsermode" content="application">
<!-- QQ应用模式 -->
<meta name="x5-page-mode" content="app">
<!-- 是否启动webapp功能,会删除默认的苹果工具栏和菜单栏 -->
<meta name="apple-mobile-web-app-capable" content="yes">
<!-- 这个主要是根据实际的页面设计的主体色为搭配来进行设置 -->
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<!-- 忽略页面中的数字识别为电话号码,email识别 -->
<meta name="format-decoration" content="telephone=no,email=no">
<!-- 启用360浏览器的极速模式(webkit) -->
<meta name="renderer" content="webkit">
<!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 -->
<meta name="HandheldFriendly" content="true">
<!-- 微软的老式浏览器 -->
<meta name="MobileOptimized" content="320">
<!-- windows phone 点击无高光 -->
<meta name="msapplication-tap-highlight" content="no">

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jquery随意添加移除html的实现代码
Jun 21 Javascript
JS动态调用方法名示例介绍
Dec 18 Javascript
jQuery实现简洁的导航菜单效果
Nov 23 Javascript
酷! 不同风格页面布局幻灯片特效js实现
Feb 19 Javascript
Html中 IFrame的用法及注意点
Dec 22 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
Dec 23 Javascript
Nuxt.js踩坑总结分享
Jan 18 Javascript
解决vue打包css文件中背景图片的路径问题
Sep 03 Javascript
关于微信公众号开发无法支付的问题解决
Dec 28 Javascript
详解Vue 全局变量,局部变量
Apr 17 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
Oct 02 Javascript
vue样式穿透 ::v-deep的具体使用
Jun 04 Javascript
IE8中jQuery.load()加载页面不显示的原因
Nov 15 #jQuery
详解ES6 Fetch API HTTP请求实用指南
Nov 14 #Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
Nov 14 #Javascript
微信小程序中遇到的iOS兼容性问题小结
Nov 14 #Javascript
javascript中一些奇葩的日期换算方法总结
Nov 14 #Javascript
element vue Array数组和Map对象的添加与删除操作
Nov 14 #Javascript
ES6 fetch函数与后台交互实现
Nov 14 #Javascript
You might like
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
php使用array_chunk函数将一个数组分割成多个数组
2018/12/05 PHP
很可爱的输入框
2008/08/03 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
JQuery学习总结【二】
2016/12/01 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Python networkx包的实现
2020/02/14 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
编写python代码实现简单抽奖器
2020/10/20 Python
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
无工作经验者个人求职信范文
2013/12/22 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
服务宗旨标语
2014/07/01 职场文书
反腐倡廉观后感
2015/06/08 职场文书
退伍军人感言
2015/08/01 职场文书
学习心理学心得体会
2016/01/22 职场文书