需要JavaScript <! - // - >?

时间:2011-11-08 11:27:34

标签: javascript html

我只想问一下标题是什么。 HTML脚本标记需要以下字符串吗?

<!--
//-->

如果我不使用它们会发生什么?

8 个答案:

答案 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标签应包含在内以用于验证目的。从一些更精细的答案中可以清楚地看出,这些都不是必需的,而是服务或服务于他们的目的。

请参阅:When is a CDATA section necessary within a script tag?

答案 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('&lt;script type=&quot;text/javascript&quot; src=&quot;http://code.jquery.com/jquery-latest.min.js&quot;&gt;&lt;/script&gt;');
</script>

请注意,JS注释用于阻止JavaScript引擎尝试执行<!---->,这可能是合法的语句(a<!--ba-->b )。

解释他们实际需要将每个"转为&quot;<转为&lt;>为{ {1}}和&gt;&

对此的“现代”修复是使用字符数据元素,该元素告诉文档所包含的所有内容都应被视为文字文本:

&amp;

在这种情况下,我正在使用多行注释,以便在代码缩小为单行时代码不会被破坏(一些富文本编辑器过去曾对我这样做过)。

最佳解决方案是将所有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块中插入<!-- //-->后,所有“未找到页面”的问题都会在一两个月内消失。