仅针对IE浏览器和国内主流套壳浏览器进行判断,不对其他浏览器进行判断
IE判断说明:判断浏览器的目的在于根据不同的浏览器作出不同的后台响应,而最主要针对的无非是CSS样式代码,而IE浏览器坑很多,它同时具备文档模式和浏览器模式(用户代理字符串),IE浏览器的文档模式不同则其对应的渲染引擎不同,CSS样式的显示应该以渲染引擎为参考标准,而不是单纯以用户代理字符串为标准。

function browerType() {var browerName = '其他浏览器';var ua = navigator.userAgent.toLocaleLowerCase();// 判断是否为IE(第一个是正常的IE,第二个是Edge,第三个是IE11)var isIE = (ua.indexOf("compatible") > -1 && ua.indexOf("msie") > -1) || (ua.indexOf("edge") > -1) || (ua.indexOf('trident') > -1 && ua.indexOf("rv:11.0") > -1);// 判断是否为IE5678,!+[1,] 在IE5678返回true,在IE9、IE10、IE11返回falsevar isLteIE8 = isIE && !+[1,];// 用于防止因通过IE8+的文档兼容性模式设置文档模式,导致版本判断失效var dm = document.documentMode, isIE5, isIE6, isIE7, isIE8, isIE9, isIE10, isIE11;if (dm) {isIE5 = dm === 5;isIE6 = dm === 6;isIE7 = dm === 7;isIE8 = dm === 8;isIE9 = dm === 9;isIE10 = dm === 10;isIE11 = dm === 11;} else {// 判断是否为IE5,IE5的文本模式为怪异模式(quirks),真实的IE5.5浏览器中没有document.compatMode属性  isIE5 = (isLteIE8 && (!document.compatMode || document.compatMode === 'BackCompat'));// 判断是否为IE6,IE7开始有XMLHttpRequest对象  isIE6 = isLteIE8 && !isIE5 && !XMLHttpRequest;// 判断是否为IE7,IE8开始有document.documentMode属性  isIE7 = isLteIE8 && !isIE6 && !document.documentMode;// 判断是否IE8  isIE8 = isLteIE8 && document.documentMode;// 判断IE9,IE9严格模式中函数内部this不为undefined  isIE9 = !isLteIE8 && (function () {            "use strict";return !!this;}());// 判断IE10,IE10开始支持严格模式,严格模式中函数内部this为undefined   isIE10 = isIE && !!document.attachEvent && (function () {            "use strict";return !this;}());// 判断IE11,IE11开始移除了attachEvent属性  isIE11 = isIE && !document.attachEvent;};// IE浏览器的判断browerName = isIE5 ? 'IE5' : isIE6 ? 'IE6' : isIE7 ? 'IE7' : isIE8 ? 'IE8' : isIE9 ? 'IE9' : isIE10 ? 'IE10' : isIE11 ? 'IE11' : // 国内套壳浏览器判断(ua.indexOf('qqbrowser') > -1) ? 'QQ浏览器' :// 先判断QQ浏览器再判断搜狗浏览器,因为QQ浏览器也有'se'(ua.indexOf('se') > -1) ? '搜狗浏览器' :(ua.indexOf('aoyou') > -1) ? '遨游浏览器' :(ua.indexOf('theworld') > -1) ? '世界之窗浏览器' :(ua.indexOf('worldchrome') > -1) ? '世界之窗极速浏览器' :(ua.indexOf('greenbrowser') > -1) ? '绿色浏览器' :(ua.indexOf('baidu') > -1) ? '百度浏览器' :            // 360浏览器判断的特殊方法,打开新页原来的'360'字符串代理已经不显示,方法失效,同时也要晚于搜狗浏览器判断,不然搜狗会被认为360浏览器(window.navigator.mimeTypes[40] || !window.navigator.mimeTypes.length) ? '360浏览器' : '其他浏览器';console.log(browerName);
}

注:针对IE浏览器的文档模式和浏览器模式,这里作出一定的区别解释。

  1. 浏览器模式
    “浏览器模式”用于切换IE针对该网页的默认文档模式、对不同版本浏览器的条件备注解析、发送给网站服务器的用户代理(User-Agent)字符串的值。网站可以根据浏览器返回的不同用户代理字符串判断浏览器的版本和安装的功能,这样就可以向不同的浏览器返回不同的页面内容。 默认情况下,IE8的浏览器模式为IE8。用户可以通过单击地址栏旁边的兼容性视图按钮来手动切换到不同的浏览器模式。在IE8中,IE8兼容性视图会以IE7文档模式来显示网页,同时会向服务器发送IE7的用户代理字符串。
  2. 文档模式
    “文档模式”用于指定IE的页面排版引擎(Trident)以哪个版本的方式来解析并渲染网页代码。切换文档模式会导致网页被刷新,但不会更改用户代理字符串中的版本号,也不会从服务器重新下载网页。切换浏览器模式的同时,浏览器也会自动切换到相应的文档模式。

最全最精准的IE浏览器判断和国内套壳浏览器判断(360,QQ,搜狗,百度等)相关推荐

  1. 推荐一款基于chromium的套壳浏览器——vivaldi

    很少向别人推荐浏览器,直到我遇到了vivaldi. 从业几十年来,用过多少浏览器我自己也记不清了.从大众熟知的IE,Netscape,Opera,Chrome,FireFox,360,百分,UC,QQ ...

  2. JavaScript 判断国内外浏览器类型和内核(含360,QQ,搜狗等)

    关于判断浏览器的内核和类型,有许多资料可供查阅.这里记录一款一个比较好用的插件:browser.js 插件git地址:https://github.com/yunnysunny/browser.js ...

  3. JS全屏代码,解决PDF.js在iframe中部分浏览器全屏功能错误

    JS全屏代码,解决PDF.js在iframe中部分浏览器全屏功能错误 PDF.js在iframe模式在火狐浏览器中按钮被屏蔽 经分析,viewer.js 发现了判断逻辑 debug发现 第二个判断后为 ...

  4. JoshChen判断是否微信内置浏览器访问【转载】

    在进行微信公众账号开发的时候,其中很大一块是微站点的开发,我们需要知道当前的浏览器是微信内置的浏览器,那么如何判断呢? 微信内置浏览器的 User Agent 如何判断微信内置浏览器,首先需要获取微信 ...

  5. js/jQuery判断浏览器名称、内核版本、浏览器壳

    1.js方法/* 判断浏览器名称和版本 目前只能判断:ie/firefox/chrome/opera/safari 2012年5月16日23:47:08 浏览器内核UA:UA; 浏览器内核名称:NV. ...

  6. php开发是可视的吗,javascript,html_Jquery判断页面元素是否在浏览器的可视区域内,javascript,html,css,html5 - phpStudy...

    Jquery判断页面元素是否在浏览器的可视区域内 前端开发中,有时需要判断某个元素是否在浏览器的可视区域内,或者是否已经滚动出了可视区域.首先想到的便是javascript操作,原生方法自然可以,不过 ...

  7. 全渠道精准营销其实不难?从这几个方面入手进行了!

    互联网时代,数字化营市场的竞争愈发激烈.商家的渠道推荐或广告轰炸所能获得的客户已经不如原来,客户总会反复线上线下之比较,同类商家之比较,才会最终选择好商家. 数字化已经渗透进人们的生活,也因此,数字化 ...

  8. CSS 利用@media screen判断识别手机/PC端浏览器

    一.写此篇的初衷: 手机用户常可以更换自己手机系统的字体,那么在浏览网页的时候,网页内容字体也都随之变了,于是我想,能不能让自己的网站的字体在手机浏览器中保持不变(使用一款自定义字体)呢:而在PC端浏 ...

  9. Vue - 判断终端是否为:IE内核、opera内核、苹果、谷歌内核、火狐内核、是否为移动终端、ios终端、android终端、是否为iPhone或者QQHD浏览器、是否iPad、是否微信、是否QQ

    前言 在 Vue 项目中,您可能需要判断用户使用的设备,来适应不同的操作. 本文示例,可帮助您判断是否是: IE内核.opera内核.苹果.谷歌内核.火狐内核.是否为移动终端.ios终端.androi ...

最新文章

  1. LeetCode Reconstruct Original Digits from English
  2. 如何让 zend studio 10 识别 Phalcon语法并且进行语法提示
  3. linux打开dc软件,Linux bc/dc命令的初步使用
  4. Java黑皮书课后题第5章:*5.50(对大写字母计数)编写一个程序,提示用户输入一个字符串,然后显示该字符串中大写字母的数目
  5. 让一个python源文件也能像bat批处理文件那样运行[转]
  6. 【Lucene4.8教程之三】搜索
  7. 七七计算机论文网,qepipnu
  8. 如何理解halcon 算子get_grayval 、set_grayval 逐行读取和逐行写入
  9. 在新款mac上找回经典的开机启动声,一条命令轻松搞定
  10. 如何用纯 CSS 创作 404 文字变形为 NON 文字的交互特效
  11. 工控: 西门子STEP 7安装和连接S7-200遇到的问题
  12. (Oracle)零基础学习SQL语句--第1篇
  13. 图文实例带你了解香农编码和霍夫曼编码
  14. 想知道程序员每天在干嘛吗?
  15. uni-app 超详细教程(二)(从菜鸟到大佬)
  16. 黑客捣毁了个暗网杀手网站,却险些触发了世界各地的多起杀戮...
  17. python 蒙特卡罗法求π值
  18. java 提取违反顺序_oracle 中 java.sql.SQLException: ORA-01002: 提取违反顺序
  19. linux pam使用手册,Linux-PAM系统管理指南(一)
  20. webpack实现es6转换为es5

热门文章

  1. Viola-Jones检测器(VJ)---学习笔记
  2. ORACLE数据库练习题整理(2)
  3. codeforces 1677A. Tokitsukaze and Strange Inequality
  4. 8086-逻辑运算指令
  5. 11-小兔鲜项目搭建-代码
  6. 大魔王程序员生成记#01#C语言基础
  7. 我的世界java1.16.3村庄种子,我的世界2020年最新版村庄种子
  8. 百度“好看”与字节“西瓜”之间,差了几个B站?
  9. 【树莓派】登入树莓派
  10. MyBatis 02