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

IT技术 javascript html
2021-01-15 19:51:13

我读的地方,你不再需要的东西像type="text/javascript"和怪异CDATA,并<!--在脚本标记的东西。所以,而不是:

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

    //your script here

-->
//]]>
</script>

你会这样做:

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

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

6个回答

参见Crockford 在<script>标签上的文章,最值得注意的是:

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

...

type="text/javascript"

该属性是可选的。从 Netscape 2 开始,所有浏览器的默认编程语言都是 JavaScript。在 XHTML 中,这个属性是必需的,也是不必要的。在 HTML 中,最好将其排除在外。浏览器知道该做什么。

“浏览器知道该做什么”......现在。下周当 RubyScript(我把它作为一个例子)被普及并且每个人都拼命接受它时会怎么样?这与使人们将他们的文件命名为“_new”并混淆其他人多年的短视思维相同。是“_new”吗?还是“_new_new”?还是“_newer”?IMO 这是短视的。
2021-03-23 19:51:13
@Slobaum,HTML5 规范声明它默认为 JavaScript如果有新的脚本类型,它们将仅在支持规范中默认值的新浏览器版本中实现。
2021-04-01 19:51:13
@Izkata,它是验证所必需的,但没有任何效果。
2021-04-02 19:51:13
如果RubyScript变得流行,它就会结束,.rbscript浏览器会相应地采取行动。
2021-04-06 19:51:13
必要的不必要的?我错过了什么吗?
2021-04-08 19:51:13

这是克罗克福德的建议。我知道我在其他地方看到过它的呼应(也许是 ppk?)。HTML5 规范不需要它。

奇怪的是,它已经成为有些AU柯朗使用“类型”属性来标记<script>你块希望进行评估:

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

通过提供一个奇怪的非 JavaScript 类型,您可以将原始文本填充到页面中以供其他 JavaScript 代码使用(大概在可以评估的脚本块中)。

我不能完全理解。请解释一下,到底什么type="text/html"意思,什么text/javascript意思..谢谢
2021-03-13 19:51:13
w3schools : In HTML5, the type attribute is no longer required for JavaScript. The default value is "application/javascript".
2021-04-01 19:51:13
@tazotodua “text/html”的含义并不是很重要;重要的是它不是“text/javascript”,浏览器会完全忽略<script>的内容但是,<script> 成为 DOM 的一部分,因此其他 JavaScript 代码可以找到它们并提取它们的内容。
2021-04-03 19:51:13
这是一个有趣的黑客。不过,不确定我会用它做什么。
2021-04-04 19:51:13
十年过去了(撰写本文的时间),在使用诱饵类型的示例中实现的内容现在是使用<template>标签原生的只是奖金提示。
2021-04-11 19:51:13

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

CDATA 如果脚本中包含任何 HTML 字符(如“<”和“>”),则只需要 XHTML 页面。

<!-- 只有旧浏览器才需要。

好吧,我很想说没有人再使用text/javascript它了,即使是缩小工具也可能会删除它……事实上,Facebook SDK 文档仅指定了<script>.

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

Amazon SDK 文档仍然有text/javascript.

Linkedin API 文档仍然有text/javascript.

Instagram仍在使用text/javascript.

类型属性标识嵌入一个脚本元素内或通过该元素的src属性所引用的代码中的脚本语言。这被指定为 MIME 类型;支持的 MIME 类型示例包括 text/javascript、text/ecmascript、application/javascript 和 application/ecmascript。

根据HTML 4.01 规范

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

但是在HTML5 中 text/javascript是默认类型,所以可以省略

类型属性给出了数据的脚本或格式的语言。如果该属性存在,则其值必须是有效的 MIME 类型。不得指定字符集参数。如果属性不存在,则使用的默认值是“text/javascript”。

换句话说,在不支持 HTML5 的旧浏览器中省略它可能会导致错误
2021-04-11 19:51:13