JavaScript-这样判断是IE的代码原理是什么?算bug么?

Web程序数据库 Web程序数据库 主题:1214 回复:2505

JavaScript-这样判断是IE的代码原理是什么?算bug么?

浮生未歇 发布于 2017-03-15 字数 81 浏览 1211 回复 3
var isIE      = /*@cc_on!@*/!1;

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(3

泛泛之交 2017-09-12 3 楼

/@cc_on!@/!1 是判定用户是否用的ie,其实更确切的说可以判定ie版本,最常用判定浏览器的应该是:navigator.userAgent。比如:

 if(/MSIE/i.test(navigator.userAgent))//判断是否是IE

而如果要确定浏览器的版本,一般不常用@cc_on而是用@_jscript_version变量,比如:

 if (@_jscript_version > 5.7)
document.write("You are using IE8+");

else if (@_jscript_version == 5.7 && window.XMLHttpRequest)
document.write("You are using IE7");

else if (@_jscript_version == 5.6 || (@_jscript_version == 5.7 && !window.XMLHttpRequest))
document.write("You are using IE6");

else if (@_jscript_version == 5.5)
document.write("You are using IE5.5");

else
document.write("You are using IE5 or older");
瑾兮 2017-07-28 2 楼

应该算是一种hack吧,不过使用需要小心,因为不知道IE哪个版本之后这个就不能用了。

清晨说ぺ晚安 2017-04-30 1 楼

不是bug,要明白/@cc_on!@/!1这个写法,先得清楚 条件编译 :

在IE中,有一个鲜为人知的功能叫做条件编译(Conditional Compilation) 
@cc_on语句|激活条件编译支持。

@cc_on语句激活 scripting 引擎中的条件编译。IE支持 @cc_on 语句可以在脚本的注释内启用条件编译功能。 

注释外的 @if 或 @set 语句也将激活条件编译。 极力推荐在注释中使用 @cc_on 语句,以使不支持条件编译的浏览器也接受此脚本为有效语法:

/@cc_on@/

来源:百度百科
那么在回过头来看这个问题,就清楚了。 利用浏览器支持的属性来判断是什么浏览器的方法很多,例子:
var isIE = document.all ?!0:!1;