封装好的js判断操作系统与浏览器代码分享


Posted in Javascript onJanuary 09, 2015

摘要:

对于前端开发我们最重要的工作就是兼容性,系统的兼容性,浏览器的兼容性等等。今天分享一个我在项目中封装的判断操作系统与浏览器的方法。

操作系统:

var os = (function() {
  var UserAgent = navigator.userAgent.toLowerCase();
  return {
    isIpad     : /ipad/.test(UserAgent),
    isIphone    : /iphone os/.test(UserAgent),
    isAndroid    : /android/.test(UserAgent),
    isWindowsCe   : /windows ce/.test(UserAgent),
    isWindowsMobile : /windows mobile/.test(UserAgent),
    isWin2K     : /windows nt 5.0/.test(UserAgent),
    isXP      : /windows nt 5.1/.test(UserAgent),
    isVista     : /windows nt 6.0/.test(UserAgent),
    isWin7     : /windows nt 6.1/.test(UserAgent),
    isWin8     : /windows nt 6.2/.test(UserAgent),
    isWin81     : /windows nt 6.3/.test(UserAgent)
  };
}());

如果要判断系统是否是iPad,只需要判断if(os.isIpad) {}.

浏览器:
 

var bw = (function() {
  var UserAgent = navigator.userAgent.toLowerCase();
  return {
    isUc   : /ucweb/.test(UserAgent), // UC浏览器
    isChrome : /chrome/.test(UserAgent.substr(-33,6)), // Chrome浏览器
    isFirefox : /firefox/.test(UserAgent), // 火狐浏览器
    isOpera  : /opera/.test(UserAgent), // Opera浏览器
    isSafire : /safari/.test(UserAgent) && !/chrome/.test(UserAgent), // safire浏览器
    is360   : /360se/.test(UserAgent), // 360浏览器
    isBaidu  : /bidubrowser/.test(UserAgent), // 百度浏览器
    isSougou : /metasr/.test(UserAgent), // 搜狗浏览器
    isIE6   : /msie 6.0/.test(UserAgent), // IE6
    isIE7   : /msie 7.0/.test(UserAgent), // IE7
    isIE8   : /msie 8.0/.test(UserAgent), // IE8
    isIE9   : /msie 9.0/.test(UserAgent), // IE9
    isIE10  : /msie 10.0/.test(UserAgent), // IE10
    isIE11  : /msie 11.0/.test(UserAgent), // IE11
    isLB   : /lbbrowser/.test(UserAgent), // 猎豹浏览器

 isWX   : /micromessenger/.test(UserAgent), // 微信内置浏览器
    isQQ   : /qqbrowser/.test(UserAgent) // QQ浏览器
  };
}());

]

小结:

浏览器都是本人亲自测试的,可能会有问题的是chrome浏览器,因为大部分浏览器都是使用WebKit内核,所以我就把chrome的navigator截取出来区分。如果以后chrome的navigator的信息位置或者chrome之后的长度发生改变就容易出现问题,但目前来看是可以的。

现在因为手机UC浏览器经常屏蔽百度的广告,但对google广告不屏蔽,我们可以加入判断是否为UC浏览器,不是就显示百度广告,是就显示google的广告

if(navigator.userAgent.indexOf('UCBrowser') > -1) {
alert("uc浏览器");
}else{
//不是uc浏览器执行的操作
}

其实具体的浏览器的一些特殊的操作可以通过

JS获取浏览器信息
浏览器代码名称:navigator.appCodeName
浏览器名称:navigator.appName
浏览器版本号:navigator.appVersion
对Java的支持:navigator.javaEnabled()
MIME类型(数组):navigator.mimeTypes
系统平台:navigator.platform
插件(数组):navigator.plugins
用户代理:navigator.userAgent

Javascript 相关文章推荐
javascript mouseover、mouseout停止事件冒泡的解决方案
Apr 07 Javascript
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
Mar 15 Javascript
理解Javascript_03_javascript全局观
Oct 11 Javascript
用JQuery调用Session的实现代码
Oct 29 Javascript
Prototype源码浅析 Enumerable部分(二)
Jan 18 Javascript
原生JavaScript制作微博发布面板效果
Mar 11 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
May 10 Javascript
基于javascript实现的购物商城商品倒计时实例
Dec 11 Javascript
轻松理解JavaScript之AJAX
Mar 15 Javascript
vue-quill-editor富文本编辑器简单使用方法
Sep 21 Javascript
Vue入门之数量加减运算操作示例
Dec 11 Javascript
基于mpvue的简单弹窗组件mptoast使用详解
Aug 02 Javascript
JavaScript Math.floor方法(对数值向下取整)
Jan 09 #Javascript
使用javascript实现json数据以csv格式下载
Jan 09 #Javascript
js读取csv文件并使用json显示出来
Jan 09 #Javascript
微信JS接口汇总及使用详解
Jan 09 #Javascript
推荐一款jQuery插件模板
Jan 09 #Javascript
JavaScript中Cookie操作实例
Jan 09 #Javascript
使用javascript实现简单的选项卡切换
Jan 09 #Javascript
You might like
mysql下创建字段并设置主键的php代码
2010/05/16 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
PHP基于Closure类创建匿名函数的方法详解
2017/08/17 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
Javascript 键盘事件的组合使用实现代码
2012/05/04 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
基于IView中on-change属性的使用详解
2018/03/15 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
js实现简单的无缝轮播效果
2020/09/05 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
python3下载抖音视频的完整代码
2019/06/05 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
python实现简单学生信息管理系统
2020/04/09 Python
Python中的Cookie模块如何使用
2020/06/04 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
语文课外活动总结
2014/08/27 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
css背景和边框标签实例详解
2021/05/21 HTML / CSS
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js