I was reading a book about learning JavaScript, and there was these paragraphs:
...in middle of 1997, Microsoft and Netscape, with associate of European Computer Manufactures Association,
released the first version of a standard that namedECMAScript
or with official formECMA-262
...
As much as I was found in this book and something like this, JavaScript and ECMAScript are the same and are different just in name.
From other hand, in Dreamweaver, bracket, and some other editors, there's some autocomplete suggestion like this:
when I want to add a script tag to my page.
I want to know if there are differences between ECMAScript
and Javascript
and when should I use text/javascript
or text/ecmascript
?
The HTML <script> type Attribute is used to specify the MIME type of script and identify the content of the Tag. It has a Default value which is “text/javascript”. Syntax: <script type="media_type"> Attribute Values: It contains a single value i.e media_type which specifies the MIME type of script.
No, it is not necessary if you use HTML5. "Differences Between HTML 4.01 and HTML5 In HTML5, the type attribute is no longer required for JavaScript. The default value is "application/javascript"." Source: https://www.w3schools.com/tags/att_script_type.asp To use HTML5 write <!
<script>: The Script element. The <script> HTML element is used to embed executable code or data; this is typically used to embed or refer to JavaScript code. The <script> element can also be used with other languages, such as WebGL's GLSL shader programming language and JSON.
TL;DR Just omit the type
tag, if you don't care about old browsers.
ECMAScript is a language specification standardized by ECMA International as ECMA-262 and ISO/IEC 16262. JavaScript is a programming language that implements this specification. ECMAScript exists in several editions. The latest edition is the 6th (in 2016), but most JavaScript implementations are only 5th edition compliant so far.
Besides ECMAScript common JavaScript implementations usually add more functionality, which might be standardized by other institutions (like the W3C) or might be proprietary (aka "browser-specific") features of the specific implementation. So you could say, that ECMAScript represents a subset of JavaScript.
However, the MIME types for JavaScript code are defined in the RFC 4329 document, which states that text/javascript
and text/ecmascript
are both obsolete and should be replaced by application/javascript
and application/ecmascript
:
Use of the "text" top-level type for this kind of content is known to be problematic. This document thus defines text/javascript and text/ ecmascript but marks them as "obsolete".
The RFC defines stricter processing rules for the application/ecmascript
than for application/javascript
, but this refers to the handling of MIME-type parameters and the character encoding and not to the interpretation of the code itself:
In the cited case, implementations of the types text/javascript, text/ecmascript, and application/javascript SHOULD and implementations of the type application/ecmascript MUST implement the requirements defined in this section: [...]
For the application/ecmascript media type, implementations MUST NOT process content labeled with a "version" parameter as if no such parameter had been specified; [...]
The following error processing behavior is RECOMMENDED for the media types text/javascript, text/ecmascript, and application/javascript, and REQUIRED for the media type application/ecmascript.
Apart from the RFCs, there is also the HTML5-Standard by the W3C: Older versions of it say, that the default value for an empty type
attribute is application/javascript
, but newer versions don't mention any specific MIME-type anymore. Instead they define any script
tag with no type or a MIME-type as a so-called "classic script":
Omitting the attribute, setting it to the empty string, or setting it to a JavaScript MIME type essence match, means that the script is a classic script, to be interpreted according to the JavaScript Script top-level production. Classic scripts are affected by the async and defer attributes, but only when the src attribute is set. Authors should omit the type attribute instead of redundantly setting it.
In general I would omit the type
attribute (as recommended by the HTML5-Standard) or use type="text/javascript"
, if you have to support older browsers. A HTTP-Server should serve JavaScript code as application/javascript
.
The current version of the HTML standard (last updated 16 July 2019) says that the language type specified with the type
attribute of the <script>
tag falls back to text/javascript
if ommitted.
Also that specification specifies that:
Servers should use text/javascript for JavaScript resources. Servers should not use other JavaScript MIME types for JavaScript resources, and must not use non-JavaScript MIME types.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With