- From: Jonas Sicking <jonas@sicking.cc>
- Date: Sun, 8 Feb 2009 23:26:08 -0800
On Sun, Feb 8, 2009 at 9:20 PM, Ian Hickson <ian at hixie.ch> wrote: > On Sun, 8 Feb 2009, Garrett Smith wrote: >> >> Sometimes a document's resources are not needed all at first. For >> example, a script that is not needed until after the document is parsed >> can be given the defer attribute (for browsers that support defer). >> >> External css can also be a blocking download. Scripts have defer >> attribute, but style and link do not. >> >> The proposal is to add to defer to style, and link. >> >> 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. I think at least some other browsers behave similarly. 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. / Jonas
Received on Sunday, 8 February 2009 23:26:08 UTC