- From: <bugzilla@jessica.w3.org>
- Date: Thu, 11 Nov 2010 09:14:19 +0000
- To: public-html@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=11295
Summary: Make script-inserted external scripts that have
.async=false execute in the insertion order, default
to true
Product: HTML WG
Version: unspecified
Platform: PC
OS/Version: All
Status: NEW
Severity: critical
Priority: P2
Component: HTML5 spec (editor: Ian Hickson)
AssignedTo: ian@hixie.ch
ReportedBy: hsivonen@iki.fi
QAContact: public-html-bugzilla@w3.org
CC: mike@w3.org, public-html-wg-issue-tracking@w3.org,
public-html@w3.org
Please apply the following delta to the spec. This is a formalization of a
suggestion from Getify on public-html and has been implemented on Firefox
trunk.
When a script element node is created, if it is being flagged as
parser-inserted, set its force-async flag to false. Otherwise, set its
force-async flag to true. (Note that createContextualFragment, innerHTML and
XSLTProcessor::transformToFragment-created scripts are not flagged as
parser-inserted.) This flag setting happens before any attributes (even
parser-set ones) are set on the node (so a fragment parser-set async attribute
may modify the flag shortly after).
When a previously-created script element node loses its parser-insertedness, if
the element doesn't have the async content attribute, set the force-async flag
to true and false otherwise.
When a script element node obtains the async content attribute (via
setAttribute, setAttributeNode, setAttributeNS, by the fragment parser or the
XSLTProcessor adding the attribute, etc.), set the force-async flag to false.
(Note that calling removeAttribute("async") doesn't modify the force-async
flag, because that would violate a reasonable and pretty deeply-baked
assumption that removing a non-existing attribute does *nothing*.)
The async IDL attribute must behave as follows:
* Upon setting, set the force-async flag to false and then reflect the async
content attribute.
* Upon getting, if the force-async flag is true, return true. Otherwise,
reflect the async content attribute.
In step 13. of
http://www.whatwg.org/specs/web-apps/current-work/#running-a-script before the
case "If the element has a src attribute" add a case:
If the script has a src attribute and the async IDL property getter returns
false,
The element must be added to the queue of ordered script-inserted external
scripts of the Document of the script element at the time the running a script
algorithm started.
The task that the networking task source places on the task queue once the
fetching algorithm has completed must run these steps:
1) If the queue of ordered script-inserted external scripts is empty or the
first script in the queue of ordered script-inserted external scripts has not
been fetched yet, abort these steps.
2) Execute the first script in the queue of ordered script-inserted external
scripts.
3) Remove the first script from queue of ordered script-inserted external
scripts.
4) Goto step #1.
Modify step 5 of http://www.whatwg.org/specs/web-apps/current-work/#the-end to
say:
Spin the event loop until the set of scripts that will execute as soon as
possible is empty and the queue of ordered script-inserted external scripts is
empty.
--
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
Received on Thursday, 11 November 2010 09:14:21 UTC