这个注释/*@ cc_on!@*/0在javascript中的if语句中做了什么?

ton*_*nix 25 javascript html5 internet-explorer

关于这个评论的一个小问题我在一本关于HTML5的电子书上发现: /*@ cc_on!@*/0这个评论应该以某种方式绑定到IE浏览器的识别,以便使用document.createElement()来创建无法识别的HTML5元素,但我没有找到有关其工作原理的有用信息,甚至作者也没有解释它.有人能解释一下它是什么以及它做了什么,拜托?

感谢您的关注!

编辑:

在电子书中,作者说:

下一个示例演示了如何解决HTML5中引入的所有新元素的问题.这里我们包含了我们想要强制IE识别的所有元素:

以下是代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <title>Styling Unknown Elements - 3</title>
    <script>
        (function() {
            if (! /*@cc_on!@*/ 0)
                return;

            var e = "abbr,article,aside,audio,canvas,  datalist,details,eventsource,figure,footer,header,hgroup,mark,menu,meter,nav,output, progress,section,time,video".split(','),
                i = e.length;
            while (i--) {
                document.createElement(e[i]);

            }
        })()
    </script>
    <style>
        time {
            font-style: italic;
        }
    </style>
      ...
Run Code Online (Sandbox Code Playgroud)

抱歉可怕的缩进,但我正在使用平板电脑.无论如何,请看看脚本标签和if条件.

ale*_*dro 28

@cc_on StatementIE(<11)浏览器的条件编译标志

MSDN引用

@cc_on声明(JavaScript)

在脚本中的注释中激活条件编译支持.

警告

Internet Explorer 11标准模式和Windows应用商店应用程序不支持条件编译.Internet Explorer 10标准模式和所有早期版本均支持条件编译.

/*@cc_on @*/
/*@
    document.write("JavaScript version: " + @_jscript_version + ".");
    document.write("<br />");
    @if (@_win32)
        document.write("Running on the 32-bit version of Windows.");
    @elif (@_win16)
        document.write("Running on the 16-bit version of Windows.");
    @else
        document.write("Running on a different operating system.");
    @end
@*/
Run Code Online (Sandbox Code Playgroud)

所以

if(!/*@cc_on!@*/0)
Run Code Online (Sandbox Code Playgroud)

如果您的浏览器不知道条件编译(IE<11除外),则表达式为:

if(!0) // ==> TRUE
Run Code Online (Sandbox Code Playgroud)

否则它将是:

if(!!0) // ==> FALSE
Run Code Online (Sandbox Code Playgroud)