type="text/ecmascript" 与 type="text/javascript"
Posted
技术标签:
【中文标题】type="text/ecmascript" 与 type="text/javascript"【英文标题】:type="text/ecmascript" vs type="text/javascript" 【发布时间】:2014-06-15 18:12:37 【问题描述】:我正在读一本关于学习 javascript 的书,里面有这些段落:
...1997 年年中,Microsoft 和 Netscape,与 欧洲计算机制造商协会, 发布第一个 名为
ECMAScript
或正式形式的标准版本ECMA-262
...
正如我在这本书和类似的东西中发现的那样,JavaScript 和 ECMAScript 是相同的,只是名称不同。
另一方面,在 Dreamweaver、括号和其他一些编辑器中,有一些这样的自动完成建议:
当我想向我的页面添加脚本标签时。
我想知道ECMAScript
和Javascript
之间是否有区别,什么时候应该使用text/javascript
或text/ecmascript
?
【问题讨论】:
你不再需要...Javascript
其他人都这么称呼它,EMCAscript
是 ISO 支持的官方规范,因为 JS 标准在 ECMA 的管理下。
投票重新打开,因为与此问题重复链接的问题没有具体说明何时使用text/ecmascript
MIME 类型。
我检查了问题顶部的链接,正如@legosica 所说;没有直接提及这一事实......我如何投票支持重新开放?
如果叫ECMAscript就更好了,避免和Java混淆
【参考方案1】:
current version of the html standard(最后更新于 2019 年 7 月 16 日)表示使用 <script>
标记的 type
属性指定的语言类型如果省略则回退到 text/javascript
。 p>
还有那个规范specifies那个:
服务器应该对 JavaScript 资源使用 text/javascript。服务器不应将其他JavaScript MIME types 用于JavaScript 资源,并且不得使用非JavaScript MIME types。
【讨论】:
【参考方案2】:TL;DR 如果您不关心旧浏览器,只需省略 type
标签即可。
ECMAScript 是由 ECMA International 标准化为 ECMA-262 和 ISO/IEC 16262 的语言规范。 JavaScript 是一种实现该规范的编程语言。 ECMAScript 存在多个版本。最新版本是第 6 版(2016 年),但到目前为止,大多数 JavaScript 实现仅符合第 5 版。
除了 ECMAScript 之外,常见的 JavaScript 实现通常会添加更多功能,这些功能可能由其他机构(如 W3C)标准化,或者可能是特定实现的专有(也称为“特定于浏览器”)功能。所以你可以说,ECMAScript 代表 JavaScript 的一个子集。
但是,RFC 4329 文档中定义了 JavaScript 代码的 MIME 类型,其中指出 text/javascript
和 text/ecmascript
都已过时,应替换为 application/javascript
和 application/ecmascript
:
已知对此类内容使用“文本”***类型 有问题。本文档因此定义了 text/javascript 和 text/ ecmascript 但将它们标记为“已过时”。
RFC 为application/ecmascript
定义了比application/javascript
更严格的处理规则,但这是指对 MIME 类型参数和字符编码的处理,而不是对代码本身的解释:
在引用的情况下,text/javascript、text/ecmascript 和 application/javascript 类型的实现应该和 application/ecmascript 类型的实现必须实现本节中定义的要求:[...]
对于 application/ecmascript 媒体类型,实现不得处理标有“version”参数的内容,就好像没有指定这样的参数一样; [...]
对于媒体类型 text/javascript、text/ecmascript 和 application/javascript,建议使用以下错误处理行为,对于媒体类型 application/ecmascript,建议使用以下错误处理行为。
除了 RFC,还有 W3C 的 HTML5 标准:Older versions 说,空的type
属性的默认值是application/javascript
,但newer versions 没有提到不再有任何特定的 MIME 类型。相反,他们将任何没有类型或 MIME 类型的 script
标记定义为所谓的“经典脚本”:
省略属性,设置为空字符串,或者设置为JavaScript MIME类型本质匹配,表示该脚本为经典脚本,按照JavaScript Script顶层制作进行解释。经典脚本受 async 和 defer 属性影响,但仅在设置 src 属性时。作者应该省略 type 属性,而不是多余地设置它。
一般来说,如果您必须支持旧版浏览器,我会省略 type
属性(如 HTML5 标准所推荐的那样)或使用 type="text/javascript"
。 HTTP-Server 应该以application/javascript
的形式提供 JavaScript 代码。
【讨论】:
在提供script
标签的type
属性时,我从未在智能感知中看到过这个application/javascript
或application/ecmascript
。我使用 Visual Studio 处理 asp.net 和 asp.net mvc 应用程序。
@RBT 即使您的代码完成不建议这些类型,它们也是有效的。但是,使用 HTML5,您根本不需要类型属性。
哦。谢谢(你的)信息。我看到here type
属性有一个默认值 text/javascript
开始 HTML5 所以它已成为可选的。好的。少打字:)。我希望一段时间后,根据您引用的 RFC,在下一版本的 HTML 中默认值将变为 application/javascript
。
对于网络应用程序,我们最有可能坚持使用text/javascript
,请参阅developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/…
@Malvoz 感谢您的提示,我已经更新了我的答案。以上是关于type="text/ecmascript" 与 type="text/javascript"的主要内容,如果未能解决你的问题,请参考以下文章
odoo controllers 中type="Json" 或type="http"
input(type="checkbox"|type="radio")+jquery使用
将 input type="text" 更改为 input type="password" onfocus()
输入 [type="submit"]:select CSS 不起作用