判断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 相关文章推荐
Extjs学习笔记之八 继承和事件基础
Jan 08 Javascript
如何编写高质量JS代码
Dec 28 Javascript
JavaScript 匿名函数和闭包介绍
Apr 13 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
Apr 29 Javascript
使用jQuery处理AJAX请求的基础学习教程
May 10 Javascript
JS 拼凑字符串的简单实例
Sep 02 Javascript
js实现增加数字显示的环形进度条效果
Feb 05 Javascript
详解AngularJS 模块化
Jun 14 Javascript
Javascript 一些需要注意的细节(必看篇)
Jul 08 Javascript
JS获取数组中出现次数最多及第二多元素的方法
Oct 27 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
Mar 01 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
Mar 03 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获取Exif缩略图的方法
2015/07/13 PHP
js 模拟气泡屏保效果代码
2010/07/10 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
python处理文本文件并生成指定格式的文件
2014/07/31 Python
Python基本语法经典教程
2016/03/11 Python
python实现图片文件批量重命名
2020/03/23 Python
Python实现登陆文件验证方法
2018/10/06 Python
Form表单及django的form表单的补充
2019/07/25 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
保时捷设计:Porsche Design
2019/03/30 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
禁毒主题班会教案
2015/08/14 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
MySQL transaction事务安全示例讲解
2022/06/21 MySQL