`

IE下诡异的注释报错——条件编译

阅读更多

    昨天QA的同事提了一个bug,在IE下功能不正常,去IE下看了,报xxx行错误,IE还是一如既往的报告不准确的错误行数,于是只要使用人肉回车定位法(加回车之后看IE报的行数是否有变化,如果有变化,说明错误在加回车行的后面,如果没有变化,说明在加回车行的前面),最终定位到一行注释上去,自己看了半天都不知道哪儿错了,还是怀疑附近代码的错误导致的,于是乎使用人肉加注释定位法(将某个代码块注释,如果错误消失,就说明是该代码行的问题),结果还是定位到这行注释,一怒之下将这行删掉,结果就ok了,想了想这行注释和一般的注释不同之处,才发现这行注释有一个@,于是只删@发现也ok了,给@前加一空格也ok,这时跟我一次查此问题的兄弟一拍大腿:此问题好像见过,我回去查查!果不其然,原来万恶的IE有一个“条件编译”的丑陋功能,提供如C中的#ifdef之类的功能,如果注释符号紧接着@就是一个条件编译的开始,而正好这行注释@后不是“条件编译”的关键字,因此报错,IE真是。。。。。。大家以后一定要小心,不要在注释后直接加@符号,当然在你不是为了“条件编译”的前提下。,

 

关于条件编译,在这里不赘述,可以参考:

 

中文:http://simue.com/blog/css-js/conditional-compilation-of-javascript-in-ie-1.html

英文:http://www.javascriptkit.com/javatutors/conditionalcompile3.shtml

 

 

顺便在g/b的时候发现的IE条件注释,仅供参考:

http://cssrainbow.cn/tutorials/xhtml-css/1130.html

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics