- From: Ian Hickson <ian@hixie.ch>
- Date: Mon, 9 Feb 2009 08:23:37 +0000 (UTC)
On Sun, 8 Feb 2009, Jonas Sicking wrote: > >> > >> This will allow browsers to not block on those elements. > > > > Browsers are already allowed to not block on those elements. > > Well, Garrett is somewhat correct. For example in the following > scenario: > > <link rel=stylesheet href="external.css"> > <script> > doStuff(); > </script> > > In gecko, when we parse the <script> tag, we'll block until all external > stylesheets have finished loading before we start executing the script. > This is because the script might be getting .offsetLeft or calling > .getComputedStyle or some such, which uses style data. We have found > that some sites break if we just use whatever style data happens to have > loaded at that point, rather than ensuring that all stylesheets have > been parsed and applied. Yes, external CSS can cause <script> elements to block on the CSS. > However adding a 'defer' attribute to the style link seems like an odd > fix as nothing is actually deferred. You very rarely actually want to > defer stylesheet loading as you generally want to show content with > stylesheets applied. Unstyled content tends to at best be ugly, at worst > be totally nonsensical. > > A more logical fix would be to add an attribute to the <script> in > question, indicating that the script can be executed without waiting for > all stylesheets to load. Though that can be very painful to add to all > scripts in the page. Possibly a page-wide attribute or API would better > solve this problem. Though I'm not really a fan of either of those > solutions either. I'm not convinced either of these are really great solutions. I think it'd be better just to have the script itself only block when it hits CSS-dependent APIs (though I recognise that that is a much harder problem in most rendering engines today). -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Monday, 9 February 2009 00:23:37 UTC