- From: <bugzilla@jessica.w3.org>
- Date: Thu, 21 Feb 2013 16:15:29 +0000
- To: public-html-admin@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=21074 Bug ID: 21074 Summary: Need ability to load scripts without blocking onload Classification: Unclassified Product: HTML WG Version: unspecified Hardware: All URL: http://www.lognormal.com/blog/2012/12/12/the-script-lo ader-pattern/ OS: All Status: NEW Severity: enhancement Priority: P2 Component: HTML5 spec Assignee: robin@w3.org Reporter: philip.tellis@gmail.com QA Contact: public-html-bugzilla@w3.org CC: mike@w3.org, public-html-admin@w3.org, public-html-wg-issue-tracking@w3.org The URL describes this in detail, but I'll describe a summary here. Current Situation: We include scripts in an HTML document using the <script> tag: <script src="script-url" type="text/javascript"></script> In this case, parsing and rendering of the document blocks until the script has been downloaded, parsed and executed since the script might change the document using document.write. If the script does not use document.write, the developer can use the async attribute to tell the browser that it can continue loading, parsing and rendering the page in parallel with the downloading, parsing and execution of the script: <script async src="script-url" type="text/javascript"></script> However, this script will still block the onload event (not clear in the spec, but all implementations appear to do this). Required Enhancement: We should either add a new attribute: "nonblocking", or add a new attribute value for the async attribute: async="nonblocking". It would work as follows: <script async="nonblocking" src="script-url" type="text/javascript"></script> This provides a hint to the user agent that it should start downloading, parsing and executing as soon as possible but it should not block the onload event (or any other event) of the containing document waiting for this script to download, parse and execute. This should also be usable in dynamically injected script nodes. User Agents that treat async as a boolean attribute will fall back to the current model. Why do we need this? Third party scripts are included in websites all over the Web. If one of these third party servers becomes unresponsive (eg: DNS failure, host timeout, etc.), this will block the onload event on all sites that include the third party script even if the async attribute is used. Since many sites perform some amount of page setup tasks in the onload event handler, this could block these tasks indefinitely depending on timeout values. The only option now available is the iframe hack described in the attached URL. -- You are receiving this mail because: You are on the CC list for the bug.
Received on Thursday, 21 February 2013 16:15:39 UTC