[Bug 21074] New: Need ability to load scripts without blocking onload

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