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

cmc*_*loh 149 html javascript

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

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

    //your script here

-->
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)

你会这样做:

<script>
    //your script here
</script>
Run Code Online (Sandbox Code Playgroud)

我不记得我在哪里读到这个.我认为这是来自谷歌或雅虎的工程师,他们特别提到哪些浏览器需要这些古老的结构以及原因.任何人都知道这个博客文章/文章被讨论过,或者有一个很好的资源谈论这个?

bdu*_*kes 130

请参阅Crockford对<script>标签的描述,最值得注意的是:

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

...

type="text/javascript"

此属性是可选的.从Netscape 2开始,所有浏览器中的默认编程语言都是JavaScript.在XHTML中,此属性是必需且不必要的.在HTML中,最好不要使用它.浏览器知道该怎么做.

  • 需要_and_不必要?我错过了什么吗? (73认同)
  • @Izkata,它是验证所必需的,但没有任何效果. (17认同)
  • @Slobaum,HTML5规范声明它[默认为JavaScript](http://developers.whatwg.org/scripting-1.html#attr-script-type).如果有新的脚本类型,它们只会在支持默认规范的新浏览器版本中实现. (17认同)
  • "浏览器知道该怎么做"......现在.下周RubyScript(我把它作为一个例子)推广,并且每个人都穿着他们的裤子采用它?这是一种同样的短视思维,使人们将其文件命名为"_new"并使其他人困惑多年.它是"_new"吗?还是"_new_new"?还是"_newer"?IMO是近视的. (13认同)
  • 如果`RubyScript`流行起来,它会在`.rbscript`结束,浏览器会采取相应的行动. (8认同)
  • @KirkStrobeck - 不是当它是一个内联脚本,但是你只需添加`type ="text/ruby​​script"`来覆盖默认的脚本类型. (6认同)
  • @Slobaum 从 2019 年开始给您写信——当时 RubyScript 尚未出现。 (3认同)
  • @bdukes和浏览器总是做对了,从不做自己的事情,因此搞砸了:)我只是说我更喜欢明确而不是隐含.我知道我们正试图通过正确地做事来强制采用规范,这很好.但我更关心的是,我的雇主申请继续正确运行,而不是试图推动范式转变. (2认同)
  • @Ringo:XHTML 5 还很活跃。XHTML 5 是 HTML 5 规范的一部分,因为 HTML 5 DOM 在语法上更简单、更严格地序列化为 XML,并且如果您想利用 XML 工具(例如 xpath、xslt、libxml、命名空间),则应该使用该版本。处理您的 HTML。许多人每天都使用 XHTML 5。 (2认同)
  • @Ringo:如果您这么认为,那么您对 ​​XHTML 的了解大约已经过期十年了。XHTML 1.1 和 XHTML 2 与 XHTML 5 非常不同。如果您总是在属性两边加引号,如果您总是平衡 `&lt;p&gt;` 和 `&lt;li&gt;`,并且如果您对必须使用自闭标签的标签使用为空,那么您所编写的内容更多的是 XHTML 5,而不是 HTML 5。 (2认同)
  • @Ringo:在标准组和浏览器开发人员之外,真正了解HTML 5语法工作原理的人并不多,对于大多数人来说,它太复杂了。大多数优秀的HTML 5开发人员确实正在编写[polyglot风味](https://dev.w3.org/html5/html-polyglot/),它只是缺少一些形式(例如,显式命名空间声明,Content-Type标头)成为合适的XHTML 5。 (2认同)

Poi*_*nty 45

这是克罗克福德的推荐.我知道我已经看到它在其他地方回响(ppk也许?).HTML5规范不要求它.

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

<script type='text/html-template'>
  <div> this is a template </div>
</script>
Run Code Online (Sandbox Code Playgroud)

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

  • @tazotodua“ text / html”的含义不是很重要;重要的是它不是“ text / javascript”,浏览器将完全忽略`&lt;script&gt;`块的内容。但是,&lt;script&gt;`将成为DOM的一部分,因此其他JavaScript代码可以找到它们并提取其内容。 (3认同)
  • [w3schools](https://www.w3schools.com/tags/att_script_type.asp):```在 HTML5 中,JavaScript 不再需要 type 属性。默认值为“application/javascript”。``` (2认同)

Roc*_*mat 19

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

CDATA 如果脚本中有任何HTML字符(如"<"和">"),则只需要XHTML页面.

<!-- 应该只需要OLD浏览器.