1.JScript条件编译
微软特立独行的JScript和原生的Javascript其实有很多不同点,利用条件编译,可以很方便的区别JScript和Javascript。废话不多,直接上代码
/*@cc_on
alert("IE中可见");
@*/
这段代码在IE中会弹出对话框;
/*@cc_on
@if ( @_jscript )
alert("IE中可见");
@else @*/
alert("其他浏览器中可见");
/*@end @*/
这段代码可在对话框中显示你使用的是IE还是非IE
/*@cc_on
alert(@_jscript_version);
@*/
这段代码会弹出你的JScript版本号。其中对应关系为:IE10=10,IE9=9,IE8=5.8,IE7=5.7,IE6=5.6或5.7,IE5.5=5.5
当用户为Windows XP安装了JScript5.7补丁后,IE6的@_jscript_version可能为5.7,而不是5.6,这一点与IETester不同。
条件编译在所有你见过的IE版本下均通用。
2.IE的quirks模式。
当HTML中没有声明DOCTYPE时,IE会自动工作在“quirks”模式下,即一种类似IE5渲染方法的模式。当使用IE6及以上版本时,我们可以使用document.compatMode来进行识别这一模式。
alert(document.compatMode);
怪癖模式下弹出“BackCompat”,正常模式下弹出“CSS1Compat”
3.浏览器兼容模式
IE8及其以上版本的浏览器为用户提供了浏览器兼容性视图,即用户在浏览网页时如果页面不能正常显示,可以尝试以低版本IE的模式下工作。从IE8开始,我们可以使用document.documentMode来获取当前模式。
我们可以写这样一段代码:alert(document.documentMode); 在IE中打开,然后再开发者工具中切换“浏览器模式”来查看效果。
通过实验我们可以发现,IE在正常模式下,弹出当前版本号,是个整数,兼容模式下,弹出所兼容的版本号,,怪癖模式下弹出“5”.
4.综合运用
将上述方法综合起来,我们就可以完全识别IE的版本了。
/*@cc_on
var mode = document.documentMode || (document.compatMode == "CSS1Compat" ? @_jscript_version==5.7 ? "XMLHttpRequest" in window ? 7 : 6 : @_jscript_version * 10 - 50 : 5);
alert(mode);
@*/