- From: Dave Singer <singer@apple.com>
- Date: Mon, 30 Jun 2008 11:12:23 -0400
- To: Francois Remy <fremycompany_pub@yahoo.fr>, Simetrical <simetrical@gmail.com>, Brad Kemper <brkemper@comcast.net>
- Cc: Andrew Fedoniouk <news@terrainformatica.com>, Daniel Glazman <daniel.glazman@disruptive-innovations.com>, David Hyatt <hyatt@apple.com>, "Håkon Wium Lie" <howcome@opera.com>, www-style list <www-style@w3.org>
OK, I am not a CSS expert, and I have not sync'd up with my
colleagues, so my remark was somewhat off the cuff, and should be
taken in that light.
I was just reacting the odd-ness of declaring a constant twice (or
more) with different values. In general in programming languages,
you get (at most) the ability to re-affirm a constant as having the
same value. Any attempt to change or re-define the value of
constants gets treated variously as an immediate error, or as
producing (that immortal phrase) 'undefined results'. Then questions
of enable/disable, load order etc., do not arise...
At 17:07 +0200 30/06/08, Francois Remy wrote:
>>Surely the error is here; bgColor has already been declared as a
>>const with a different value. You have a syntax violation (attempt
>>to re-define a constant). If you declare something 'const' in the
>>context of a set of pages, it's your job to make sure it is, in
>>fact, constant. Whether the language processor enforces this, or
>>whether you get 'undefined results' is a matter for debate.
>
>If we accept that JS can change the value of the constant, we should
>not call them "constant".
>If we refuse to update a constant value after this constant is
>defined (then, it's a true constant),
>we are getting a non-standard situation because a disabled/deleted
>stylesheet can still have some effect in the document.
>
>I've found another problem, too.
>The value of a constant is defined the first time this constant
>appear in the document's stylesheet (following your spec).
>
>If we got the following situation :
>
><head>
> <link ... style1.css ... />
> <link ... style2.css ... />
> <link ... style3.css ... />
> <script>
> document.querySelector('html head').insertBefore(<link ...
>style0.css ... />, document.querySelector("html head
>link[href='style1.css']"));
> </script>
></head>
>
>What's the stylesheet that define the value of the constant (I
>suppose that all these stylesheets define a new one) ?
>
>The stylesheets are loaded asynchronously. So, when they are loaded,
>the DOM has already changed and style0.css is became the "first"
>stylesheet of the document. If we follow your spec, the constant's
>value is gift by the first stylesheet that define it. But then, the
>constant has been overwrotten by JS and it's not sure for the admin
>that it's not possible to override its constants. Yes, it's now a
>constant (style1>3 has no more effect on the constant value), but
>the value of the constant can be decided by JS.
>
>If we want to continue to have style1.css has defining stylesheet,
>how can this be done ?
>(=How can the UA know it's the first stylesheet that defined the constant)
>>>The DOM doesn't reflect the "primary" position of the stylesheet
>>>(style0 can be inserted before style1)
>>>The load time is not a revelant information because stylesheet are
>>>loaded asynchronously. (style2 can load before style1)
>
>Should the UA "keep" the order the stylesheet should be loaded ?
>(style1, 2, 3, then style0)
>>>We must take count of @import declaration.
>>>We can load stylesheet in result with DOM-events, setTimeout,
>>>setInterval, etc. too.
>>>If we add @import statment in a stylesheet, how will the UA define
>>>the "priority" order of the sub-stylesheet ?
>
>Or have you another solution ?
>
>Regards,
>Fremy
>
> PS : Some "readonly" variable can exists, but then it should
>be UA-defined consts.
--
David Singer
Apple/QuickTime
Received on Monday, 30 June 2008 15:14:03 UTC