History of the HTML Script Tag (JavaScript) (2011)
A Story of Web Tech Politics: The Evolution of JavaScript's Script Tag
Yesterday, i removed all type="text/javascript" on my site. That is:
<script type="text/javascript">
becomes
<script>
This is a story of political chaos of the web.
- In the beginning of time, a time of Netscape kingdom, ~1996, it was just
<SCRIPT>. - Then, with Microsoft's meddling, with JScript and VBScript, it became
language="JavaScript"orlanguage="JScript". - By ~1999, a entity called W3C emerged, over-peering correctness on earth, it declared that the attribute should be
type="text/javascript", and is required. - However, in practice, both the “language” and “type” are always optional, and no browser's parser actually give a flying faak about it.
- Then, around ~2007, the standard body changed its mind and thought that the type really should be
type="application/javascript"ortype="application/ecmascript". (See: Internet media type) Nobody in their right mind ever used that. - Then, in our glorious HTML5 era, ~2009, ruled by Google and Apple, in their HTML5 spec, it's back to
<script>.
History of the JavaScript script Tag
in the beginning, around 1997, it is this:
<script language="JavaScript">...</script>
The idea was, we can support other programing languages in the future.
Then, around maybe year 2000, the standard body W3C says it should be this:
type="text/javascript"
The idea was, this is more general form, to support any type of object, not just programing languages.
Then, around 2006-04, the standard body W3C says it should be this:
type="application/javascript"
The idea was, this is more correct. JavaScript is considered an application, not text.
Then, around 2010, HTML5, the standard body, now WHATWG running the show, says it should be just:
<script>...</script>
The idea was, there is no other web scripting languages in practice, and all those text or application declaration are in practice ignored by browser.
History: HTML Script Tag Survey, Year 2006
the following is written around 2006.
In practice, you'll see
type="text/javascript"
instead of
type="application/javascript"
The text/javascript is still ok, but has been deprecated since 2006-04.
Of existing code on the web, you will also see:
<script language="JavaScript">...</script>
or just
<script>...</script>
The language= is the original specification when Netscape invented JavaScript in 1997.
Later on, standard bodies invented the type= and made it a required attribute.
However, as of 2005-08, major websites do not clearly show any of them
winning the popularity contest:
- amazon.com uses both
type=andlanguage=and sometimes just thelanguage=. - apple.com uses just the
language=. - yahoo.com uses just the
language=. - orkut.com uses just the
type=. - msn.com sometimes uses both, sometimes one or the other.
- ebay.com sometimes uses both, sometimes one or the other.
- google.com simply uses just
<script>
For all practical purposes, one can just use
<script>
and it doesn't make any difference. If you want your code to conform to w3c standard, use
<script type="application/javascript">
. This is recommended in RFC4329 (published in 2006-04), which also declares
text/javascript
as obsolete.