判断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 正则替换 replace(regExp, function)用法
May 22 Javascript
jQuery实现下拉框左右选择的简单实例
Feb 22 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
Aug 15 Javascript
setTimeout内不支持jquery的选择器的解决方案
Apr 28 Javascript
JQuery中层次选择器用法实例详解
May 18 Javascript
JS版微信6.0分享接口用法分析
Oct 13 Javascript
原生js实现简单的链式操作
Jul 04 Javascript
对vue里函数的调用顺序介绍
Mar 17 Javascript
详解iview的checkbox多选框全选时校验问题
Jun 10 Javascript
Javascript实现鼠标点击冒泡特效
Dec 24 Javascript
jQuery实现简单评论区功能
Oct 26 jQuery
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 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删除HTMl标签的实现代码
2013/06/30 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
详解Python 切片语法
2019/06/10 Python
Python将string转换到float的实例方法
2019/07/29 Python
Python使用type动态创建类操作示例
2020/02/29 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
日语专业推荐信
2013/11/12 职场文书
运动会拉拉队口号
2014/06/09 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
初中中等生评语
2014/12/29 职场文书
会议简报格式范文
2015/07/20 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书