预备知识:NodeList的实时性

通过 document.getElementsByTagName,document.forms ,document.images  等方法获取到nodelist以后  里面的内容会适时的更新 这一点区别与array

我们利用它和条件注释来检测oldIE的版本

我认为 这是最靠谱的方法

--------------------------------华丽的分割线 请听我娓娓道来------------------------------------

搞前端的一大痛苦就是要搞定各个浏览器. 在这个问题上最牛逼最烦最装逼最可恶的要是ie大哥了.

不是ie的manager吃白饭,ie受制于操作系统的限制,不能随便升级 . ie永远做不了”版本帝”

但是ie9以后速度就很快了. win8.1上ie启动速度不亚于chrome

"浏览器能力检测优于浏览器检测”

if(!!document.addEventListener)//能力检测
{
alert('我可以通过document.addEventListener添加事件')
}

业界公认的观点.

但是有时候还是避免不了浏览器的检测 今天咱来说说ie大哥的检测

普遍的检测方法有以下几种

    1. userAgent

你的代码里 是不是有这样一句

var isIE6 = window.navigator.userAgent.indexOf('IE 6') > 0;                        // O(∩_∩)O哈哈~

我感觉这种方法最萌了

通常情况下 他不会有什么问题  但是看上去非常的屌丝(个人意见)

而且userAgent 这个属性我们可以更改的    百度一下 “更改useragent”

2. 怪癖检测

var isIE=!!window.ActiveXObject;
var isIE6=isIE&&!window.XMLHttpRequest;

var isIE8=isIE&&!!document.documentMode;

var isIE7=isIE&&!isIE6&&!isIE8;

通常我们仅支持到ie6   这样的代码到ie5下妥妥的挂掉

3.条件注释

varisIE6=false;

document.write("<!--[iflte IE6]><script>isIE6=true;</scr"+"ipt><![endif]-->");

if(isIE6){

alert('你当前的浏览器是IE6或者以下');

}

这样的方法很稳定 但是不优雅 而且写入了dom元素

小弟提供一种方法大家参考一下

咔咔上代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>IEVersion</title>
<script> var IEVersion = (function () { //返回结果
var result = {
isIE: false, //是否ie
version: -1 //版本号
} //#region ie4_9
var _version = 3;//ie版本号 临时的
var ie4_9 = false; var odiv = document.createElement('div');
/*
目标元素
这个元素不需要append
在这个元素内插入ie条件注释 注释内包含一个标签 inner_element
*/
var inner_element = odiv.getElementsByTagName('i'); while (odiv.innerHTML = '<!--[if gt IE ' + (++_version) + ']><i></i><![endif]-->', inner_element[0]) {
ie4_9 = true;
}
//#endregion if (ie4_9 && (_version > 3 && _version <= 9)) {
result = { isIE: true, version: _version };
} else if (document.all) {
result = { isIE: true, version: 10 };
} else if ("ActiveXObject" in window) {
result = { isIE: true, version: 11 };
} return result;
})(); </script> <script> if (IEVersion.isIE) {
alert(IEVersion.version);
} </script> </head>
<body>
<!--[if IE 7]>所谓的双核浏览器的兼容模式会显示这个 因为他们跑的是ie7模式<![endif]-->
</body>
</html>

ps :

ie4-9 用条件注释来检测  新建的dom元素不需要插入到页面中

ie10不支持条件注释 但是ie10 支持document.all

ie11 就用("ActiveXObject" in window)来检测一下吧

有么问题欢迎大家讨论 O(∩_∩)O哈哈~

最好的ie版本检测方式的更多相关文章

  1. ios应用启动后的自动版本检测方式

    今天意外的发现了appstore居然还提供通过url获取json格式的客户端信息链接: http://itunes.apple.com/lookup?id=$id 通过此地址可以获取应用的icon.介 ...

  2. _1Python简介 安装及版本检测

    简介 Python是一种面向对象的解释性计算机程序设计语言,由荷兰人Guido von Rossum于1988年的圣诞节发明,第一个公开发行版于1991年. Python崇尚优美.清晰.简单,是一个优 ...

  3. Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!

    Android服务器--使用TomCat实现软件的版本检测,升级,以及下载更新进度! 算下来,TomCat服务器已经写了很长一段时间了,一直说拿他来搞点事 情,也一直没做,今天刚好有空,交流群还有人请 ...

  4. Dependabot 开始支持 pub package 版本检测

    今年年初,我们发布了 Flutter 2022 产品路线图,其中「基础设施建设」这部分提到:2022 年 Flutter 团队将增加对供应链的安全的投入,目的是达到符合基础设施 SLSA 4 级别中描 ...

  5. 通过adb方式给安卓手机截图的cmd批处理文件

    @echo off rem  通过adb方式截图rem  需要安装adb ,一般安装了android sdk 默认带了adb ,路径为sdk目录的android-sdk\platform-toolsr ...

  6. VisualVM通过jstatd方式远程监控远程主机

    配置好权限文件 [root@test bin]# cd $JAVA_HOME/bin [root@test bin]# vim jstatd.all.policy grant codebase &qu ...

  7. 在WPF中使用依赖注入的方式创建视图

    在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...

  8. UWP中新加的数据绑定方式x:Bind分析总结

    UWP中新加的数据绑定方式x:Bind分析总结 0x00 UWP中的x:Bind 由之前有过WPF开发经验,所以在学习UWP的时候直接省略了XAML.数据绑定等几个看着十分眼熟的主题.学习过程中倒是也 ...

  9. MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息

    MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...

随机推荐

  1. Git的一些东西(后续补充)

    查看帮助,要装git-doc,另外推荐git的图形客户端gitg,比gitk好看多了,用apt-get install就可   HEAD是当前工作版本的指针   --global保存的是当前用户的配置 ...

  2. InfluxDB 常用命令

    查表: http://192.168.0.200:8086/query?q=select+*+from+telegraf..cpu http://192.168.0.200:8086/query?q= ...

  3. sql clr项目注意

    1.如果引用了其他第三方的dll没有在系统里注册的话会报错,需要手工引用,引用的时候可能需要不安全的使用授权,如果没有权限则使用以下语句获取 alter database Class01New_Cac ...

  4. 黄聪:如何使用钩子定制WordPress添加媒体界面,去除不需要的元素

    原文:http://www.solagirl.net/customize-wordpress-media-upload-ui.html WordPress编写文章界面的添加媒体按钮允许用户上传多媒体文 ...

  5. webstorm 破解码

    https://blog.csdn.net/voke_/article/details/76418116 摘自此博客

  6. uoj #14.【UER #1】DZY Loves Graph

    http://uoj.ac/problem/14 由于加入的边权递增,可以直接运行kruskal并支持撤销,但这样如果反复批量删边和撤销,时间复杂度会退化,因此需要对删边操作加上延时处理,只有在删边后 ...

  7. xp sql2000 安装SP4失败解决方案

    环境:xp sp3 SQL: sql2000sql2000 SP4下载链接: http://www.microsoft.com/downloads/details.aspx?familyid=8E2D ...

  8. 【C#】C#操作Excel文件(转)

    实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模 ...

  9. HTML和SEO基础知识:H标签全透视

    原文地址:http://www.chinaz.com/web/2010/0921/134391.shtml 什么是H标签? h1,h2,h3,h4,h5,h6,作为标题标签,并且依据重要性递减.我认为 ...

  10. CAP在MySQL的分析

    此文转载在登博的文章,给大家分享 问题一:数据一致性.在不使用共享存储的情况下,传统RDBMS(例如:Oracle/MySQL/PostgreSQL等),能否做到在主库出问题时的数据零丢失. 问题二: ...