views:

2737

answers:

4

What is the MIME type of javascript?

More specifically, what is the right thing to put in the "type" attribute of a script tag? application/x-javascript and text/javascript seem to be the main contenders.

+2  A: 

In a script tag I would use text/javascript. This appears in the HTML 4.0 specification, anyway.

http://www.w3.org/TR/REC-html40/interact/scripts.html

[EDIT] Funny how the RFC that standardized on application/javascript is 2 years old, but text/javascript is still more common. Is this yet another case of custom triumphing over standards? It also appears in HTML5.

tvanfosson
text/javascript is still used for the same reason PNG images are avoided -- compatibility with IE 5 and 6.
John Millikin
And because intuatively it makes more sense to call it text/javascript.
AnthonyWJones
+3  A: 

text/javascript

I believe IE doesn't accept application/x-javascript

Specifying the scripting language

Morgan ARR Allen
+13  A: 

This is a common mistake. The MIME type for javascript wasn't standardized for years. It's now officially: "application/javascript".

The real kicker here is that most browsers won't use that attribute anyway, at least not in the case of the script tag. They actually peek inside the packet and determine the type for themselves.

So the bottom line is that the type="text/javascript" doesn't do anything as far as the javascript is concerned, but it's part of the spec for both HTML 4 and XHTML 1.0.

keparo
I can confirm that having <script type="application/javascript"> will *fail* in Internet Explorer.
John Millikin
Kelly's right, browsers tend to trust the MIME type sent with the response headers over the type attribute of the script tag.
Andrew Hedges
Standards are a good thing but some times the choices made by these committees are baffling. Javascript is text, text/javascript is what is in use so why choose application/javascript. Sometimes I wonder whether these people actually live in the real world. ;)
AnthonyWJones
@AnthonyWJones: It's complicated. This is an example where the standard came through to clean up a wild mess of rampant practices. There were as many as 8 ad-hoc MIME types in use. The committee came back with a solid recommendation, but only too late. And while JS is text, it's also source code.
keparo
For inline code, browsers will ignore script blocks if they use an unrecognized script mime type, like text/html, but will evaluate the script block if the type is missing or recognized.
Zach
Browsers won't do anything ... but the mime type can mean a lot to a proxy server or a CDN (like Akamai), these might do some last mile compression of known mime types for you. If headers are clean and standard, such things are easier.
Precipitous
+2  A: 

Far out this is the first page Iv found on the topic with any sense about it.

My collective research suggests: - 1: text/javascript as Keparo stated must be used in html4 and xhtml1 if you want it to validate but doesnt do anything. 2: application/javascript is expected to be the new official mime type if everyone agrees and when everything catches up. 3: application/x-javascript (x meaning unofficial) is the current server side mime reference for javascript. 4: everyone expects that as per usual microsoft will decide to do something completely different to further confuse and stuff up the matter.

Summary: for now, if you want your html/xhtml to work in MSIE and validate with W3C then declare type="text/javascript". and if you want your web server to that you know mean javascript then use application/x-javascript .

Thanks Guys.

ekerner
+1 for mentioning server-side JS. However, have you a source or quote, who uses app/x-js on server side?
Boldewyn
Apache httpd.conf uses server side javascript MIME to configure things like: - - ForceType (For non-suffixed or non-standard files), - Output Filters (Like minifiers, gzip, compress, and anything else that needs to ID data type by MIME).Also, Id give a -1 to anyone using server side javascript, and the advise: get serious and dont be afraid to learn.
ekerner
Another SS javascript MIME requirement example is the case where your using a server side database interface script/program to dynamically generate your javascript code while populating variables within from a database of some kind. The generating code must declare 'Content-type: application/x-javascript' as a header, otherwise the server software - and perhaps even client software (if not explicitly declared) - will have no way of recognizing the data as javascript (As in my previous comment).
ekerner