我只想问一下标题是什么。 HTML脚本标记需要以下字符串吗?
<!--
//-->
如果我不使用它们会发生什么?
答案 0 :(得分:34)
除非您定位的是<script>
元素之前的浏览器(即Netscape 1和朋友)。 (提示:你不是)。
如果您不使用它们,并且旧的浏览器(这么旧它甚至无法处理使用虚拟主机的网站所需的HTTP主机标头)尝试访问该网站,那么<script>
元素将被视为要显示的文本。
进一步阅读:Comments and CDATA: The mysterious history of script and style in HTML
答案 1 :(得分:8)
可能发生的最糟糕的事情是,您的页面由不知道<script>
标记的用户代理检索,并尝试将您的脚本块解析为常规HTML。 JavaScript代码将作为常规文本处理,<
符号可能会干扰页面标记。一个强制的例子:
<script type="text/javascript">
if(a<del || a>b){
foo();
}
</script>
Lorem ipsum dolor sit amet.
...可以呈现丑陋的删除文字:
if(ab){foo(); Lorem ipsum dolor坐好。
这些过时的用户代理是否存在?哦,他们确实做到了。请注意我已经小心避免使用“浏览器”这个词。问题不在于谁现在使用Mosaic。这是一个由PHP编写的基于regexp的解析器编写得很糟糕的网站。
你应该关心吗?好吧,可能不是:)。答案 2 :(得分:3)
如果您不使用它们,90年代早期的浏览器可能显示源JS代码而不是运行它。
答案 3 :(得分:3)
不,他们不是必需的。 这种习惯是支持真正的旧浏览器所必需的,并且与包含CDATA标签有轻微关系,CDATA标签应包含在内以用于验证目的。从一些更精细的答案中可以清楚地看出,这些都不是必需的,而是服务或服务于他们的目的。
答案 4 :(得分:2)
对于有效的 HTML,您的内联JavaScript应该是HTML转义的。
如果您要编写如下脚本:
<script type="text/javascript">
document.write('<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>');
</script>
会出现问题,因为该脚本包含</script>
,它将关闭第一个开场脚本标记。较旧的用户代理存在各种棘手的JavaScript问题,并且更容易告诉人们使用:
<script>
//<!--
//-->
</script>
比教人们把脚本写成:
<script type="text/javascript">
document.write('<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>');
</script>
请注意,JS注释用于阻止JavaScript引擎尝试执行<!--
和-->
,这可能是合法的语句(a<!--b
和a-->b
)。子>
解释他们实际需要将每个"
转为"
,<
转为<
,>
为{ {1}}和>
到&
。
对此的“现代”修复是使用字符数据元素,该元素告诉文档所包含的所有内容都应被视为文字文本:
&
在这种情况下,我正在使用多行注释,以便在代码缩小为单行时代码不会被破坏(一些富文本编辑器过去曾对我这样做过)。
最佳解决方案是将所有HTML保存在<script type="text/javascript">
/* <![CDATA[ */
/* ]] */
</script>
个文件中,将所有CSS保存在.html
个文件中,将所有JS保存在.css
个文件中。您永远不必担心HTML转义JavaScript,只需插入新的.js
,您就可以在其他地方重复使用JS。
答案 5 :(得分:1)
Google“为什么要在html中注释javascript”,首先点击:
http://www.howtocreate.co.uk/tutorials/javascript/incorporate
不再需要这个了。所有当前的浏览器都知道脚本标签,以及如何处理它们的内容,因为它们自HTML以来就是HTML的一部分。不理解HTML 3或脚本的浏览器(这些浏览器现在几乎从未使用过)将显示脚本,就好像这是页面的内容。您可以通过使用标准HTML注释注释掉脚本来隐藏脚本。
答案 6 :(得分:1)
99%的时间,不再需要它们:)除非您运行一些非常旧的浏览器!
答案 7 :(得分:0)
以这种方式评论JavaScript代码也可能会阻止内容在搜索引擎中编制索引,并且在某些情况下可能是理想的。
例如,前段时间我在Google网站管理员工具中发现了很多“未找到网页”的问题。在对网址进行简单分析之后,我清除了Google从我的JS代码中获取所有类似路径的变量(如“name / 001”),将它们与当前的url(mysite.info/staff)联系起来并尝试请求结果网址。当然没有成功。
在某些JS块中插入<!-- //-->
后,所有“未找到页面”的问题都会在一两个月内消失。