- From: Philip Taylor <philip@zaynar.demon.co.uk>
- Date: Sat, 08 Sep 2007 14:43:32 +0100
- To: Anne van Kesteren <annevk@opera.com>
- CC: Mihai Sucan <mihai.sucan@gmail.com>, public-html <public-html@w3.org>
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