判断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 相关文章推荐
JavaScript 不只是脚本
May 30 Javascript
jQuery中Ajax的load方法详解
Jan 14 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
Jan 18 Javascript
javascript正则表达式基础知识入门
Apr 20 Javascript
javascript实现支持移动设备画廊
Aug 24 Javascript
JS回调函数简单用法示例
Feb 09 Javascript
js中开关变量使用实例
Feb 24 Javascript
ztree简介_动力节点Java学院整理
Jul 19 Javascript
vue.js实现带日期星期的数字时钟功能示例
Aug 28 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
May 29 Javascript
vue实现图片懒加载的方法分析
Feb 05 Javascript
基于JavaScript实现表格隔行换色
May 08 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
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
php生成图形验证码几种方法小结
2013/08/15 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
自制PHP框架之设计模式
2017/05/07 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
innerText 使用示例
2014/01/23 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
python把转列表为集合的方法
2019/06/28 Python
Python 3.8 新功能大揭秘【新手必学】
2020/02/05 Python
python实现低通滤波器代码
2020/02/26 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
大型晚会策划方案
2014/02/06 职场文书
物流管理专业毕业生求职信
2014/03/23 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
课外活动实习计划
2015/01/19 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书
Redis数据结构之链表与字典的使用
2021/05/11 Redis
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL
Java获取字符串编码格式实现思路
2022/09/23 Java/Android