javascript块中的HTML评论?

Mik*_*ore 10 html javascript

我有一个像下面这样的函数(在下面),它在HTML页面中插入一段HTML代码:

function someEventHandler(htmlContent)
{
  document.getElementById('some-element-id').innerHTML = htmlContent;
}
Run Code Online (Sandbox Code Playgroud)

这适用于包含img标记的HTML代码.

<script>但是,当HTML代码包含块时,它们不会呈现.此外,脚本块包含由HTML注释包围的JavaScript.例如:

<script type="text/javascript">
<!--
    function someFunctionThatRendersStaticImageOrFlash()...
-->
</script>
Run Code Online (Sandbox Code Playgroud)

包含HTML注释的这些脚本块在插入后不会呈现.我可以控制插入的代码,并且在没有HTML注释的情况下测试它,并且它们成功呈现.

据我所知,像这样的HTML评论在早期版本的Netscape中使用,以防止浏览器与javascript的不兼容问题.

是否有任何其他原因(或任何正当理由)在JavaScript块中包含HTML样式注释?

编辑 我输入错误.结束评论是://-->.

Mar*_*c B 16

实际上,只有<!--有效的JavaScript.要在javascript中结束html注释,您实际上需要使用//-->.

这些天不再需要在Javascript中使用HTML注释了.浏览器如此陈旧以至于无法理解<script>标签,因此不太可能在"现代"网站上渲染任何内容,而且您不应该容纳那些完全在石器时代浏览器上的用户.

不过,如果你打算到包括XML文档中的HTML,和/或正在写X-HTML,那么你就必须使用XML <![CDATA[]]>罩,各种运营商的Javascript( ,&,<>特别)会导致没有机箱的XML解析错误.


Mat*_*ens 9

这是浏览器和JavaScript引擎始终实现的非标准功能.如今,它无法从Web平台中删除,因为这会破坏向后兼容性.它JavaScript/Web ECMAScript规范中有详细说明:

<!--必须被视为a的开头SingleLineComment- 相当于//.

var x = true;
<!-- x = false; // note: no syntax error
x; // true
Run Code Online (Sandbox Code Playgroud)

-->在行的开头,可选地以空格或MultiLineComments 开头 ,必须被视为SingleLineComment- 等效于//.

var x = true;
--> x = false; // note: no syntax error
x; // true

var x = 1;
/*
multiline comment!
x = 2;
*/ --> x = 3;
x; // 1
Run Code Online (Sandbox Code Playgroud)


Cha*_*ian 6

不,没有理由包括它们.我经常省略这些评论,并且对现代浏览器没有任何问题.