- From: Cameron McCormack <cam@mcc.id.au>
- Date: Thu, 4 Sep 2008 15:57:38 +1000
- To: public-svg-wg@w3.org
Hello WG.
For ACTION-2063, I’m to fix the spec to make <script> processing more
consistent with HTML. Here is my proposed rewording of the first part
of section 15.2.1 “Script processing”:
Execution of a given 'script' element occurs at most once. There is a
conceptual flag associated with each 'script' element (referred to
here as the "already processed" flag) that enforces this behavior.
When 'script' elements are executed depends on how they came to be in
the document.
One way for a 'script' element to be in the document is if it
was inserted while parsing the document. As mentioned in 5.9.2
Progressive rendering, as the document is parsed if a 'script' element
is encountered then it will be processed just after the element is
inserted into the document, but before any more of the document is
parsed and further nodes inserted into the document. (See below for a
description of what it means for a 'script' element to be processed.)
Once processed, parsing of the document resumes.
The other way a 'script' element to be in the document is if it was
inserted into the document by something other than the parser (such
as by other script executing). In this case, as soon as one or more
'script' elements are inserted into the document, they must be
processed one by one in document order.
A 'script' element is processed as follows:
1. If the 'script' element’s "already processed" flag is true or if
the element is not in the document tree, then no action is
performed and these steps are ended.
2. If the 'script' element references external script content (that
is, it has an 'xlink:href' attribute specified), then processing
blocks until that external script content referenced by the
current value of 'xlink:href' has been fetched or is determined
to be an _invalid IRI reference_.
3. The 'script' element’s "already processed" flag
4. If the script content is inline, or if is external and was
fetched succesfully, then the script is executed. Note that at
this point, these steps may be re-entrant if the execution of the
script results in further 'script' elements being inserted into
the document.
Note that, as described in 5.9.2 Progressive rendering, a _load_ event
is dispatched on a 'script' element once it has been processed, unless
it referenced external script content with an _invalid IRI reference_
and 'externalResourceRequired' was set to "true".
Modifying a 'script' element’s 'xlink:href' attribute after its
"already processed" flag is set to true will not cause any new script
content to be fetched or executed.
I will also have to make concomitant changes to the progressive
rendering section to ensure that nodes are inserted in the right place
when parsing, and stating that if the node just inserted was a 'script',
that it executes before the load event is dispatched and parsing
continues. (That would be for ACTION-2107.)
Comments please.
Thanks,
Cameron
--
Cameron McCormack ≝ http://mcc.id.au/
Received on Thursday, 4 September 2008 05:58:17 UTC