您好,欢迎访问一九零五行业门户网

js中有关IE版本检测_javascript技巧

见得最多的就是检测navigator.useragent(这个可以面向所有浏览器,略过)。
另外一种就是ie的条件注释,这篇有个比较详细的说明 http://www.jb51.net/article/29336.htm
复制代码 代码如下:
我测试的结果是这种形式是可用的。唯一需要注意的是
复制代码 代码如下:
var ieversion = (function(){ return document.getelementbyid('ieversion')})();
以此类推,可以获得各个版本的信息,甚至可以添加gt,gte等,从而一次判定一类版本。
关于这种写法,有个例子就是:
复制代码 代码如下:
于是在css里面就可以不用别的hack了,从而避免在ie里面多加载一次css,
直接
复制代码 代码如下:
.ie6 xx{}
.ie7 xx{}
.ie8 xx{}
xx{}
第二、既然可以写在页面内,当然也可以js来动态生成。我google了一把,发现还真有人这么做的。
文章地址如下:http://www.jb51.net/article/29337.htm,写得还比较详细,原理也很简单。
不过这样的缺憾就是把条件注释限定到js上了,于css就是鸡肋了。
继续,既然可以动态生成条件注释来辨明ie版本,基于ie的css hack,应该也可以动态生成一段html片段,用样式值来判定版本。
下面是最容易想到的形式,我测试发现这么确实可以,不过也发现了一个问题,看下面的一段代码:
复制代码 代码如下:
测试
在ie9下结果:log: test_1:yellow----test_2:yellow
在ie8下结果:log: test_1:#ff6600----test_2:#ff6600
在ie7下结果:log: test_1:green----test_2:blue
在ie6下结果:test_1:blue ----test_2:blue (ie6没有console.log,所以上面的console.log需要换成alert)
上面的问题大家应该看出来了,ie7下两种情况不一致,不知道是我的ie7兼容模式的问题还是别的什么原因,知道的请指教。
确认代码:
复制代码 代码如下:
原始
ie7结果:
ie6结果:
基本原理和ie的条件注释差不多,我们一次检测color值就可以了,所以改变一下上面的例子就是:
复制代码 代码如下:
测试
在ie9下结果:ie9
在ie8下结果:ie8
在ie7下结果:ie7
在ie6下结果:ie6
按理来说,对于ff,chrome/safari、opera都可以利用-moz、-webkit、-o等私有前缀来辨别,不过对于属性的选取要斟酌,类似color是不行的。
这个检测方法旁门左道而已,未来版本或者其他浏览器是不是有这个bug也不确定,而且ie7的那个bug我还没有弄清楚,所以也就暂时知道可以这么做就可以了。
其它类似信息

推荐信息