FW: LC Comment - Script & Progressive Rendering / Multiple Pages

This post didn't get registered so I resubmit it now.

-----Original Message-----
From: Andrew Sledd 
Sent: Wednesday, November 24, 2004 12:03 PM
To: 'www-svg@w3.org'
Subject: LC Comment - Script & Progressive Rendering / Multiple Pages


Dear SVG WG,

How is scripting to be handled when combined with Progressive Rendering and or Multiple Page?

When is script to be executed?

>From the Specification:
---------------------------------
16.1
"Script execution happens only at load time. Removing, inserting or altering script elements once the document has been loaded has no effect. "

Additionally script is required to be in the global scope.
---------------------------------

Are we to infer that this means the whole document must be loaded before the script is executed? Thus usefulness of combining script and progressive rendering and/or multiple pages will be limited.

We would propose that the 1.2 specification make an adjustment to script handling which would enable script to be executed in a more controlled manner during a progressive rendering and/or multipage rendering. We propose that script elements when in a time container with timelineBegin="onStart" should be interpreted/executed upon load of the script element. That would enable content providers control, while requiring them to take special consideration when setting timelineBegin="onStart". For example - on a UA which progressively downloads and renders at each startElement and endElement
  
  <svg timelineBegin="onStart">
    <script> document.getElementById("foo").setTrait("visibility", "visible");</script>
    <rect id="foo" visibility="hidden">
  </svg>

Would not render the rectangle, while

  <svg timelineBegin="onStart">
    <rect id="foo" visibility="hidden">
    <script>document.getElementById("foo").setTrait("visibility", "visible");</script>

would render the rectangle. And

<svg timelineBegin="onStart">
    <rect id="foo" visibility="hidden">
    <script>document.getElementById("foo").setTrait("visibility", "visible");</script>
    <cirlce ...>

might well render the rect, then render the rect and the cicle in the next rendering pass.

The use of externalresourcesRequired="true" as described in progressive rendering (Section 8), and/or the timelineBegin="onLoad" for a page enable the content provider to ensure that the script has been run before any rending of a sub-tree (i.e. group) or time container is performed.

Ex:
<svg xmlns="http://www.w3.org/2000/svg" version="1.2" streamedContents="true" timelineBegin="onStart">
   <g>
     <!-- graphics here are always visible -->
   </g>

   <pageSet>
      <page timelineBegin="onLoad">
        <rect id="foo1" fill="red" visibility="hidden">
	  <script>document.getElementById("foo1").setTrait("visibility","visible");</script>
      </page>
   </pageSet>
</svg>

Furthermore, allowing script as a child of pageSet (or alternatively allowing it to be included between the end tags of the pageSet and the svg), would enable scripting which works on a series of pages or the complete document, e.g. the script could restart the page sequence.

Regards,
Andrew Sledd
ZOOMON Mobile Solutions

Received on Tuesday, 30 November 2004 13:51:05 UTC