一个应对旧版浏览器忽略HTML页面中的JavaScript块的老措施是将<script>
元素的内容包裹在HTML注释中:
<script>
<!--
alert("Your browser supports JavaScript");
//-->
</script>
这样做的原因是旧浏览器不支持JavaScript,会将<script>
元素中的内容呈现为文本。因此,在HTML注释中放置JavaScript代码可以使浏览器没有内容可呈现。
另一方面,现代浏览器会看到<script>
元素并解析其中的内容作为JavaScript代码。因此,注释必须是有效的JavaScript代码。关闭的HTML注释(-->
)由于之前有JavaScript行注释(//
),所以被JavaScript解析器忽略。
我的问题是:开头的HTML注释(<!--
)如何不会导致JavaScript解析器失败?我从各种人那里听说过,开头的HTML注释是有效的JavaScript代码。如果开头的注释被评估为JavaScript,执行时它会做什么呢?
//
注释一样工作。看起来像是硬编码的魔术字符串?也很好奇知道实际答案。 - c69