HTML注释(可选地以空格开头)也将导致代码(在同一行上)被浏览器忽略,尽管这被认为是不好的做法。
具有HTML注释打开顺序(<!--)的单行注释:
注意: JavaScript解释器在-->此处忽略HTML注释()的结尾字符。
<!-- A single-line comment. <!-- --> Identical to using `//自 <!-- --> the closing `-->` is ignored.
可以在旧版代码中观察到此技术,以从不支持JavaScript的浏览器中隐藏JavaScript:
<script type="text/javascript" language="JavaScript"> <!-- /* Arbitrary JavaScript code. Old browsers would treat it as HTML code. */ // --> </script>
HTML结束注释也可以在JavaScript中(与开头注释无关)在行的开头(可选地以空格开头),在这种情况下,它也会导致其余行被忽略:
--> Unreachable JS code
这些事实也被利用来允许页面首先以HTML本身,其次以JavaScript自身进行调用。例如:
<!-- self.postMessage('reached JS "file"'); /* --> <!DOCTYPE html> <script> var w1 = new Worker('#1'); w1.onmessage = function (e) { console.log(e.data); // 'reached JS "file" }; </script> <!-- */ -->
运行HTML时,<!--和-->注释之间的所有多行文本都将被忽略,因此当以HTML运行时,其中包含的JavaScript将被忽略。
但是,对于JavaScript,虽然以<!--和开头的行-->被忽略,但是它们的作用是不会越过多行,因此,self.postMessage(...以JavaScript运行时,它们之后的行(例如)至少在到达JavaScript注释之前不会被忽略。用/*和标记*/。在上面的示例中,此类JavaScript注释用于忽略其余的HTML文本(直到HTML文本-->也作为JavaScript被忽略)。