你需要在<script>标签中指定的text / javascript吗?

我在某处读到你不再需要在你的脚本标签中使用type="text/javascript"和奇怪的CDATA<!--东西。 所以,而不是:

 <script type="text/javascript"> //<![CDATA[ <!-- //your script here --> //]]> </script> 

你只需要做:

 <script> //your script here </script> 

我不记得我在哪里阅读这个。 我认为它来自Google或Yahoo工程师,他们特别提到了哪些浏览器需要这些古老的构造以及为什么。 任何人都知道这篇文章被讨论过的博客文章/文章,还是有一个很好的资源来谈论这个?

请参阅Crockford在<script>标签上的<script> ,最引人注目的是:

不要在脚本中使用<!-- //--> hack。 它旨在防止脚本在第一代浏览器Netscape 1和Mosaic上显示为文本。 这是多年来没有必要的。 应该表示HTML注释。 应该忽略注释,而不是编译和执行。 此外,HTML注释不包括-- ,所以递减的脚本有HTML错误。

type="text/javascript"

该属性是可选的。 由于Netscape 2是所有浏览器中的默认编程语言,都是JavaScript。 在XHTML中,这个属性是必需的和不必要的。 在HTML中,最好不要使用它。 浏览器知道该怎么做。

这是一个克罗克福德的build议。 我知道我已经看到它在别处回声(ppk也许?)。 HTML5规范不要求它。

奇怪的是,使用“type”属性来标记你不想被评估的<script>块会变得有些不合适

 <script type='text/html-template'> <div> this is a template </div> </script> 

通过给出一个奇怪的非JavaScripttypes,您可以将原始文本填充到页面中供其他JavaScript代码使用(推测可以在脚本块中进行评估)。

HTML5不需要type="text/javascript" (这是默认的)。

如果脚本中有任何HTML字符(如“<”和“>”), CDATA仅适用于XHTML页面。

只适用于旧浏览器。

type属性标识脚本元素中embedded的代码的脚本语言,或者通过元素的src属性引用。 这被指定为MIMEtypes; 支持的MIMEtypes包括text / javascript,text / ecmascript,application / javascript和application / ecmascript。

根据HTML 4.01规范

type属性指定元素内容的脚本语言,并覆盖默认的脚本语言。 脚本语言被指定为内容types(例如“text / javascript”)。 作者必须为此属性提供一个值。 这个属性没有默认值。

但在HTML5 text/javascript是默认的types,所以你可以省略

type属性给出脚本的语言或数据的格式。 如果该属性存在,则其值必须是有效的MIMEtypes。 charset参数不能被指定。 如果该属性不存在,则使用默认值“text / javascript”。

你可能会想到这里的这篇文章的依赖是脚本默认为HTML5中的文本/ JavaScript自动,而非HTML5的浏览器仍然希望你明确定义types明智的即使他们几乎总是会猜测文本/ JavaScript的反正。

这取决于浏览器正确解释script块的基础上,我相信,而不是type属性。 所以要回答你的问题,不,现代浏览器不需要(我在说IE7 +,FF,Webkit)。 如果你支持的浏览器比以前更老…我为你感到难过=)

那么,我很想说,没有人再使用text/javascript ,甚至缩小工具可能会删除它…确实, Facebook SDK文档只指定<script>

但是, Google SDK文档仍然具有text/javascript

Amazon SDK文档仍然具有text/javascript

LinkedIn API文档仍然具有text/javascript

Instagram仍然使用text/javascript

type="text/javascript" :在HTML 4和XHTML中是必需的,但在HTML5中是可选的。

CDATA :在XHTML中是必需的。

<!-- :用于隐藏非常旧的浏览器中的JavaScript。 例如:Netscape 1和Internet Explorer 2,任何人都不再使用。

那么我不断看到更多的例子没有文字/ JavaScript,但由于某种原因,我的脚本不会工作在FF时,我这样做。 我会build议保持文本/ JavaScript的声明。 如果您的浏览器已closuresjavascript,CDATA标记可防止JavaScript在您的网站中显示为纯文本。 就我个人而言,我不再使用这些标签,不要认为没有用户在那里没有分配,如果他们在那里,他们可能想成长一些大脑:P