Rud*_*udu 5 javascript internet-explorer comments
我在IE 7,6.5中遇到了一个bug /未记录的功能(也许还有其他?).这不会影响Opera(10.5x)Firefox(3.5.x)或任何其他浏览器(这是我迄今为止测试的所有内容).它似乎不是Javascript记录的能力.
通过包含用双斜杠表示的注释,并在keys(//@@
)后面直接跟随double ,整个.js
文件变得无用.我检查了几个变种,这里是我发现的(其中fail = JS未加载,pass = JS加载):
//@@
//@ @
//@@@
- 任何数量的@似乎没有什么区别//@@ text
- 任何内容似乎都没有帮助//@hello@
- @之间的任何内容似乎没有帮助// @@
// @ @
- 第一个@之前的空格似乎阻止了//hello @@
- 第一个@之前的任何内容似乎都阻止了/*@@*/
- 似乎只适用于//
评论风格IE 7 - 只是忽略该文件,当试图引用该文件的内容时,你会得到" <function/object> is undefined
" 的错误.IE6.5具有报告" Invalid character
" 的体面,这显着提高了您发现问题的能力!
所以问题是:有谁知道为什么会发生这种情况以及发生了什么?
您可以使用它(插入空格,使用其他注释样式等),但值得注意的是问题,因为调试可能非常耗时.
更新: 如何重现:
资料来源: flaw.ie.html
<html lang="en">
<head>
<title>Test</title>
<script src="turnon.cc.js"></script>
<script src="flaw.ie.js"></script>
</head>
<body>
World
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
资料来源: flaw.ie.js
//@@
alert('hello');
Run Code Online (Sandbox Code Playgroud)
资料来源: turnon.cc.js
/*@cc_on
@*/
Run Code Online (Sandbox Code Playgroud)
结果:
IE:页面:World
FF/Opera:Alert:你好!页:世界
可能的结论:在IE中启用条件编译后,请注意与语法模糊相似的注释.