判断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 相关文章推荐
用 JSON 处理缓存
Apr 27 Javascript
JS获取当前日期和时间的简单实例
Nov 19 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
Jun 24 Javascript
详谈JavaScript内存泄漏
Nov 14 Javascript
jQuery基础知识小结
Dec 22 Javascript
浅析javascript操作 cookie对象
Dec 26 Javascript
最新最热最实用的15个jQuery插件汇总
Jul 05 Javascript
Jquery简单分页实现方法
Jul 24 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
Jun 21 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
Feb 20 Javascript
基于layui内置模块(element常用元素的操作)
Sep 20 Javascript
vue watch监控对象的简单方法示例
Jan 07 Vue.js
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 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
jquery实现简单每周轮换的日历
2020/09/10 jQuery
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
python笔记(2)
2012/10/24 Python
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
pycharm无法安装第三方库的问题及解决方法以scrapy为例(图解)
2020/05/09 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
联强国际笔试题面试题
2013/07/10 面试题
客服主管岗位职责
2013/12/13 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
2016年员工政治思想表现评语
2015/12/02 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript