Re: The script language attribute

Anne van Kesteren wrote:
> 
> On Sat, 08 Sep 2007 14:09:20 +0200, Mihai Sucan <mihai.sucan@gmail.com> 
> wrote:
>> 2. The algorithm for running a script says that the value of the 
>> "language" attribute is prefixed with "text/", and that the resulting 
>> string is the MIME type of the given script. However, I believe that's 
>> not a complete interpretation of the "language" attribute. It's known 
>> there are documents which use values such as "JavaScript", 
>> "Javascript", "JavaScript 1.2", "JScript", "javascript1.5", etc.
>>
>> The value is generally a mess.
> 
> It depends on what user agents do with the value in the end. Does 
> "JavaScript 1.2" for instance trigger the slight subtleties for the 1.2 
> codepath?

It looks like there are no differences. See e.g. 
https://bugzilla.mozilla.org/show_bug.cgi?id=255895 ("JS1.2 must die") 
where language detection was removed from Firefox 1.5+, and 
http://lxr.mozilla.org/mozilla/source/content/base/src/nsScriptLoader.cpp#381 
saying "IE, Opera, etc. do not respect language version, so neither 
should we at this late date in the browser wars saga."

https://bugzilla.mozilla.org/attachment.cgi?id=167555 shows that 
language=JavaScript1.2 and language=JavaScript are treated the same (at 
least in semi-recent versions of IE/Safari/Opera/Firefox).


The language attribute still matters in deciding whether something 
should be executed as JavaScript. Extending the above demonstration in 
http://canvex.lazyilluminati.com/misc/jsversions.html shows the 
following values are understood:

IE6/7: "JavaScript1.(1|2|3)", "JScript", "LiveScript", "EcmaScript", 
"JavaScript".

Firefox 2: "JavaScript1.(0|1|2|3|4|5|6|7)", "LiveScript, "Mocha", 
"JavaScript".

Firefox 3: As in FF2, but with "JavaScript1.8" too.

Opera 9.2/9.5: sort of "JavaScriptN.M" where N.M <= 1.5 except more 
complex and weird (it ignores any hyphens before the number, it accepts 
1.01 but not 1.11, etc), and "JScript", "LiveScript", "EcmaScript", 
"JavaScript".

Safari 3: "JavaScript1.(1|2|3|4|5|6|7)", "JScript", "LiveScript", 
"EcmaScript", "JavaScript".

(Those lists for Firefox and Safari should be comprehensive, since they 
come from the source code; IE and Opera might accept other values too.)

All those values are handled identically (as far as I can see), and all 
other values result in the script not executing.


So, the only ones in common between all browsers are "JavaScript", 
"JavaScript1.1", "JavaScript1.2", "JavaScript1.3". Hopefully that 
corresponds with the values that people are using in practice, but it 
may be good to test that.

-- 
Philip Taylor
philip@zaynar.demon.co.uk

Received on Saturday, 8 September 2007 13:43:44 UTC