Dan*_*iel 12 html javascript cross-browser
让非常旧的浏览器忽略HTML页面中的JavaScript块的一个古老的习惯用法是<script>在HTML注释中包含元素的内容:
<script>
<!--
alert("Your browser supports JavaScript");
//-->
</script>
Run Code Online (Sandbox Code Playgroud)
原理是旧的无JavaScript浏览器将文本呈现为<script>元素的内容,因此将JavaScript放在HTML注释中会使浏览器无需呈现.
另一方面,现代浏览器将看到该<script>元素并将其内容解析为JavaScript.因此,评论需要是有效的JavaScript.-->JavaScript解析器会忽略关闭HTML注释(),因为它前面有一个JavaScript line-comment(//).
我的问题是,打开 HTML comment(<!--)不会导致JavaScript解析器失败?我从各种各样的人那里听说开场HTML评论是有效的JavaScript.如果开场评论被评估为JavaScript,那么它在执行时会做什么?
这似乎是一些令人兴奋的,可能有特殊含义的表达(<,!并且--是在Javascript中所有运营商),但没有操作数也没有任何意义.
事实证明,这<!--简直等同//于Javascript,它用于注释掉一行.
这是一种语言功能,虽然似乎没有很好的文档记录,并且可能因为支持这种"黑客"的简单原因而被添加.而现在我们必须忍受它不要打破向后兼容性.
毋庸置疑,尽管这是一件有趣的事情,但这种评论不应该用于其他人可能会阅读和使用的真实代码中.
"hack"也是过时的,因为现在每个浏览器都能理解<script>标签并且不显示其内容(即使Javascript被关闭).就个人而言,在大多数情况下,我尝试避免将Javascript直接写入HTML,并始终将我的Javascript作为外部资源加载以分离HTML和Javascript.
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |