[whatwg] defer on style, depends

Garrett Smith dhtmlkitchen at gmail.com
Sun Feb 15 13:15:49 PST 2009

On Sun, Feb 15, 2009 at 9:54 AM, Boris Zbarsky <bzbarsky at mit.edu> wrote:
> Garrett Smith wrote:
>>> Because you have <script>s after your stylesheets, not just stylesheets.
>>>  Really, controlled experiments are hard.  You have to hold all but one
>>> variable constant.
>> OK, I modified the example:
>> http://localhost/jstest/block/link-img-noscript.html
>> The bottom script will not load ('load' as opposed to 'run') in
>> Firefox/3.0.6 until after 5 seconds.
> Right.  Because you still have another script before it.

Yes, you are correct. It is the script that blocks the external script
from being requested; not the stylesheet. This has been changed in

>> The result shows that example.js loads 5 seconds after the initial
>> page load. example.js waits for the stylesheet to load.
> It waits for the first script to execute, which waits for the stylesheet to
> load.  That's not quite the same thing.

Yes, thank you.

>> My concern is with the recomputation you mentioned. Can you elaborate
>> on that, or point me to a webpage that explains it?
> Well, once a new stylesheet loads you have to redo rule matching for all
> nodes that might be affected in the document.  In practice, I believe
> current UAs will rerun the rule matching algorithm on all nodes in the
> document.

I can see why rule matching would happen for all nodes in the document.

On what occasion(s) do(es) that algorithm run?

Aside: Could the CSS have a selector applied to it for sub-matches?
e.g. First find nodes in the document that match a selector value,
then match stylesheets rules that match the subset. So instead of:

.infoPanel table { }
.infoPanel table tr { }

it would be (pseudocode):
.infoPanel {
    table {}
    tr {}

Could such a strategy for rule-matching help performance, or would it
hinder performance or be too much work to maintain?

I know it is off topic, but the effect of rule matching would hurt performance.

>> Question: What does IE do?
> That's a really good question.  I don't have IE on hand to test with; do
> you?

LOL. No, I have only my mac at home. I need a new laptop with windows.
Does anyone reading have windows?

>>> Well, one option is to stop worrying about micromanaging the load order
>>> and
>>> assume that speculative parsing will solve your problems.... will it?
>> Possibly. If the author could declare what a script depends on and let
>> the implementation determine what to load and when, would that be too
>> complicated?
> Too complicated for whom?  The author or the implementation?

I see a few edge cases. For example:
  A script depends on something that is never loaded.
  A script depends on something that is added to the document later.
  A script depends on an alternate stylesheet.

Reading <script depends="a"...></script> seems clear to me. Then
again, I stole the idea from ANT.

For the implementation, I do not actually know because I have not
worked on that code. What are your thoughts?

> -Boris


More information about the whatwg mailing list