【问题标题】:what does this comment /*@cc_on!@*/0 do inside an if statement in javascript?这条评论 /*@cc_on!@*/0 在 javascript 的 if 语句中做了什么?
【发布时间】:2017-10-07 06:24:40
【问题描述】:

关于我在一本关于 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>
      ...

抱歉,我使用的是平板电脑。无论如何,请看一下脚本标签和 if 条件。

【问题讨论】:

    标签: javascript html internet-explorer


    【解决方案1】:

    @cc_on StatementIE(

    引用MSDN

    @cc_on 声明 (JavaScript)

    在脚本的 cmets 中激活条件编译支持。

    注意

    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
    @*/
    

    所以

    if(!/*@cc_on!@*/0)
    

    如果您的浏览器不支持条件编译(IE

    if(!0) // ==> TRUE
    

    否则它将是:

    if(!!0) // ==> FALSE
    

    【讨论】:

    • 感谢您的回复,但我的情况下的条件编译语句有点不同,请您解释一下为什么在 @cc_on 之后有一个 !@ 以及 */ 注释关闭后的 0 是什么?
    • 只是另一个问题:在代码示例中,您在第 2 行开始的注释中发布了 所有代码,即“/*@ " 仅由 I.E. 的版本编译。 11 以外,例如8、7,我说的对吗?
    猜你喜欢
    • 1970-01-01
    • 2021-08-22
    • 2021-09-17
    • 1970-01-01
    • 2014-07-21
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多