IE中的多个@ JS评论错误

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加载):

  1. 失败: //@@
  2. 失败: //@ @
  3. 失败://@@@- 任何数量的@似乎没有什么区别
  4. 失败://@@ text- 任何内容似乎都没有帮助
  5. 失败://@hello@- @之间的任何内容似乎没有帮助
  6. 通过: // @@
  7. 传递:// @ @- 第一个@之前的空格似乎阻止了
  8. 传递://hello @@- 第一个@之前的任何内容似乎都阻止了
  9. 传递:/*@@*/- 似乎只适用于//评论风格

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中启用条件编译后,请注意与语法模糊相似的注释.