Re: The script language attribute

Le Sat, 08 Sep 2007 16:43:32 +0300, Philip Taylor  
<philip@zaynar.demon.co.uk> a écrit:

> 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:
>
> [...]

What I am saying is that the current algorithm for running scripts simply  
assumes that the "language" attribute value is used as part in script MIME  
type: 'text/' + language. For JavaScript, this is known to not always be  
the case. More precisely, there's no strict equivalence between the type  
attribute and the language attribute. The spec allows for an equivalence  
between the language and type attributes like this: type=text/javascript  
or language=javascript - all the same. Yet, in current UAs that's not  
true: type=text/mocha won't do the same as language=mocha. One can check  
this by looking into the source code of Gecko (at the link provided by  
Philip).

The spec should point out that JS is a special case and that it can be  
detected based on a known list of possible values. As you said, the  
attribute matters in deciding if the code is to be executed as JavaScript,  
or not. Yet the current algorithm in the spec fails if someone uses  
<script language="JavaScript 1.2"|Mocha|other-possible-values>.

IMHO, the spec doesn't go into enough details about this attribute.



-- 
http://www.robodesign.ro

Received on Saturday, 8 September 2007 15:41:41 UTC