最好的ie版本检测方式
预备知识: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大哥的检测
普遍的检测方法有以下几种
- 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版本检测方式的更多相关文章
- ios应用启动后的自动版本检测方式
今天意外的发现了appstore居然还提供通过url获取json格式的客户端信息链接: http://itunes.apple.com/lookup?id=$id 通过此地址可以获取应用的icon.介 ...
- _1Python简介 安装及版本检测
简介 Python是一种面向对象的解释性计算机程序设计语言,由荷兰人Guido von Rossum于1988年的圣诞节发明,第一个公开发行版于1991年. Python崇尚优美.清晰.简单,是一个优 ...
- Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
Android服务器--使用TomCat实现软件的版本检测,升级,以及下载更新进度! 算下来,TomCat服务器已经写了很长一段时间了,一直说拿他来搞点事 情,也一直没做,今天刚好有空,交流群还有人请 ...
- Dependabot 开始支持 pub package 版本检测
今年年初,我们发布了 Flutter 2022 产品路线图,其中「基础设施建设」这部分提到:2022 年 Flutter 团队将增加对供应链的安全的投入,目的是达到符合基础设施 SLSA 4 级别中描 ...
- 通过adb方式给安卓手机截图的cmd批处理文件
@echo off rem 通过adb方式截图rem 需要安装adb ,一般安装了android sdk 默认带了adb ,路径为sdk目录的android-sdk\platform-toolsr ...
- VisualVM通过jstatd方式远程监控远程主机
配置好权限文件 [root@test bin]# cd $JAVA_HOME/bin [root@test bin]# vim jstatd.all.policy grant codebase &qu ...
- 在WPF中使用依赖注入的方式创建视图
在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...
- UWP中新加的数据绑定方式x:Bind分析总结
UWP中新加的数据绑定方式x:Bind分析总结 0x00 UWP中的x:Bind 由之前有过WPF开发经验,所以在学习UWP的时候直接省略了XAML.数据绑定等几个看着十分眼熟的主题.学习过程中倒是也 ...
- MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息
MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...
随机推荐
- C#性能优化总结
1. C#语言方面 1.1 垃圾回收 垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意. 1.1.1 避免不必要的对象创建 由于垃圾回收的代价较高,所 ...
- PByte和PChar的关系
作为指针是相同的, 解析的内容,稍微有点区别. var s:String;P:PChar;B:PByte;a:Integer;begin s:='1234'; P:=PChar(s);//按chr ...
- C#实现设置系统时间
using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace Demo { pub ...
- String[]字符串数组,按字典顺序排列大小
package ltb6w1; public class WordSort1 { private String[] a= {"hello","world",&q ...
- 陷入了一个NGUI自适应的一个坑
自己对anchor的乱用.造成自己深陷anchor来搞自适应 耽误了太多的精力,最终也是回到正轨的途径 这期间浪费的太多精力了. 沉迷一件错误的事情过久 就 要果断的跳出 调整 . 但凡让自己觉得别扭 ...
- Java-Runoob-高级教程-实例-方法:14. Java 实例 – Varargs 可变参数使用
ylbtech-Java-Runoob-高级教程-实例-方法:14. Java 实例 – Varargs 可变参数使用 1.返回顶部 1. Java 实例 - Varargs 可变参数使用 Java ...
- centos7.0KVM虚拟化
需要在图形化界面完成实验 查看CPU信息 # cat /proc/cpuinfo centos7默认安装的虚拟化包 # yum list open*tools 如果没安装就安装 #yum instal ...
- JavaScript中的类(class)、构造函数(constructor)、原型(prototype)
类 Class 类的概念应该是面向对象语言的一个特色,但是JavaScript并不像Java,C++等高级语言那样拥有正式的类,而是多数通过构造器以及原型方式来仿造实现.在讨论构造器和原型方法前,我可 ...
- 编码(encode和decode)
一. 编码 1. ASCII编码 ASCII是最早的计算机编码,包含了英文字母(大小写),数字,标点等特殊符号,一共128个码位,最多只能用8位来表示(一个字节),ASCLL码最多256个位置,无法提 ...
- Mongodb集群搭建之 Sharding+ Replica Sets集群架构(2)
参考http://blog.51cto.com/kaliarch/2047358 一.概述 1.1 背景 为解决mongodb在replica set每个从节点上面的数据库均是对数据库的全量拷贝,从节 ...