4 septembre 2001

18 Les scripts


Contenu


  .

18.1 La spécification du langage de script

18.1.1 La spécification du langage de script par défaut

L'attribut contentScriptType sur l'élément 'svg' spécifie le langage de script par défaut du fragment de document donné.

contentScriptType = "content-type"
Identifie le langage de script par défaut pour le document donné. Cet attribut indique le langage de script utilisé pour le traitement des chaînes de valeur des attributs d'événement. La valeur content-type spécifie un type de média, selon [RFC2045]. La valeur par défaut est "text/ecmascript".
Animable : non.

18.1.2 La déclaration locale d'un langage de script

Il est également possible de spécifier le langage de script pour chaque élément individuel 'script' en spécifiant un attribut type attribute sur l'élément 'script'.

18.2 L'élément 'script'

Un élément 'script' équivaut à l'élément 'script' en HTML, c'est ainsi un endroit pour placer des scripts (par exemple, ECMAScript). Toutes les fonctions définies dans un élément 'script' ont une portée « globale » à travers le document courant entier.

L'exemple script01 définit une fonction circle_click qui est appelée par l'attribut d'événement onclick sur l'élément 'circle'. Ci-dessous, le dessin de gauche est l'image initiale, celui de droite montre le résultat après un clic sur le cercle.

Remarquer que cette exemple démontre l'emploi de l'attribut d'événement onclick dans un but d'explication. L'exemple présuppose la présence d'un appareil pour l'entrée qui a les mêmes caractéristiques comportementales qu'une souris, ce qui n'est pas toujours le cas. Pour tenir compte du plus grand nombre d'utilisateurs, on devrait utiliser l'attribut d'événement onactivate plutôt que l'attribut onclick.

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" 
  "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg width="6cm" height="5cm" viewBox="0 0 600 500"
     xmlns="http://www.w3.org/2000/svg">
  <desc>Exemple script01 - invoque une fonction ECMAScript à partir d'un événement onclick
  </desc>
  <!-- Fonction ECMAScript qui change le rayon à chaque clic -->
  <script type="text/ecmascript"> <![CDATA[
    function circle_click(evt) {
      var circle = evt.target;
      var currentRadius = circle.getAttribute("r");
      if (currentRadius == 100)
        circle.setAttribute("r", currentRadius*2);
      else
        circle.setAttribute("r", currentRadius*0.5);
    }
  ]]> </script>

  <!-- Contour en bleu de l'aire du dessin -->
  <rect x="1" y="1" width="598" height="498" fill="none" stroke="blue"/>

  <!-- S'exécute à chaque clic -->
  <circle onclick="circle_click(evt)" cx="300" cy="225" r="100"
          fill="red"/>

  <text x="300" y="480" 
        font-family="Verdana" font-size="32" text-anchor="middle">
    Cliquer sur le cercle change sa taille
  </text>
</svg>
Exemple script01
Exemple script01 - invoque une fonction ECMAScript à partir d'un événement onclick - avant premier clic     Exemple script01 après le clic - invoque une fonction ECMAScript à partir d'un événement onclick - avant premier clic

Voir cet exemple en SVG (seulement avec navigateur gérant SVG)
 

<!ELEMENT script (#PCDATA) >
<!ATTLIST script
  %stdAttrs;
  %xlinkRefAttrs;
  xlink:href %URI; #IMPLIED
  externalResourcesRequired %Boolean; #IMPLIED
  type %ContentType; #REQUIRED >

Définitions des attributs :

type = "content-type"
Identifie le langage de script pour l'élément 'script' donnée. La valeur content-type spécifie un type de média, selon [RFC2045]. Animable : non.

Attributs définis ailleurs :
%stdAttrs;, %xlinkRefAttrs;, href, externalResourcesRequired.

18.3 La gestion de l'événement

Les événements peuvent entraîner l'exécution de scripts quand l'un ou l'autre des suivants survient :

Les sections de la spécification en relation :

18.4 Les attributs d'événement

Les attributs d'événement suivants sont disponibles pour de nombreux éléments SVG.

La liste complète des événements, qui font partie du langage SVG et du DOM SVG, ainsi que leur description est donnée dans la section La liste complète des événements reconnus.

Les attributs d'événement des éléments graphiques et des éléments conteneurs

<!ENTITY % graphicsElementEvents
  "onfocusin %Script; #IMPLIED
   onfocusout %Script; #IMPLIED
   onactivate %Script; #IMPLIED
   onclick %Script; #IMPLIED
   onmousedown %Script; #IMPLIED
   onmouseup %Script; #IMPLIED
   onmouseover %Script; #IMPLIED
   onmousemove %Script; #IMPLIED
   onmouseout %Script; #IMPLIED
   onload %Script; #IMPLIED" >

Les attributs d'événement au niveau du document

<!ENTITY % documentEvents
  "onunload %Script; #IMPLIED
   onabort %Script; #IMPLIED
   onerror %Script; #IMPLIED
   onresize %Script; #IMPLIED
   onscroll %Script; #IMPLIED
   onzoom %Script; #IMPLIED" >

Les attributs des événements d'animation

<!ENTITY % animationEvents
  "onbegin %Script; #IMPLIED
   onend %Script; #IMPLIED
   onrepeat %Script; #IMPLIED" >

Animable : non.


18.5 Les interfaces du DOM

Les interfaces suivantes sont définies ci-dessous : SVGScriptElement, SVGEvent, SVGZoomEvent.


L'interface SVGScriptElement

L'interface SVGScriptElement correspond à l'élément 'script'.


Définition IDL
interface SVGScriptElement : 
                SVGElement,
                SVGURIReference,
                SVGExternalResourcesRequired { 

           attribute DOMString type;
                       // raises DOMException on setting
};

attributs
DOMString type
Correspond à l'attribut type sur l'élément 'script' donné.
Exceptions à l'initialisation
DOMException
NO_MODIFICATION_ALLOWED_ERR : déclenchée lors d'une tentative de modifier la valeur d'un attribut en lecture seule.

L'interface SVGEvent

Le jeu d'événements SVG contient une liste des types d'événement spéciaux qui sont disponibles en SVG.

Un utilisateur du DOM peut utiliser la méthode hasFeature de l'interface DOMImplementation pour déterminer si le jeu des événements SVG est reconnu par une implémentation du DOM. La chaîne représentative pour ce jeu d'événements est "SVGEvents". On utilise aussi cette chaîne avec la méthode createEvent.

Les événements SVG s'appuient sur l'interface DOMEvent de base pour la transmission d'informations contextuelles.

Les différents types de ces événements pouvant survenir sont :

SVGLoad
Voir l'événement SVGLoad.
SVGUnload
Voir l'événement SVGUnload.
SVGAbort
Voir l'événement SVGAbort.
SVGError
Voir l'événement SVGError.
SVGResize
Voir l'événement SVGResize.
SVGScroll
Voir l'événement SVGScroll.

Définition IDL
interface SVGEvent : events::Event {};


L'interface SVGZoomEvent

Un utilisateur du DOM peut utiliser la méthode hasFeature de l'interface DOMImplementation pour déterminer si le jeu événement de zoom SVG est reconnu par une implémentation DOM. La chaîne représentative pour ce jeu est "SVGZoomEvents". On utilise aussi cette chaîne avec la méthode createEvent.

Le gestionnaire de l'événement de zoom intervient avant que l'événement de zoom ne soit traité. Le reste du DOM représente l'état précédent du document. Le document sera réinitialisé lors du retour normal depuis le gestionnaire d'événement.

Le type d'événement de l'interface utilisateur pour un événement de zoom est :

SVGZoom
L'événement de zoom survient quand l'utilisateur initie une action qui entraîne un changement d'échelle de la vue courante du fragment de document SVG. Les gestionnaires d'événement ne sont reconnus que sur les éléments 'svg'. Voir l'événement SVGZoom.

Définition IDL
interface SVGZoomEvent : events::UIEvent { 
  readonly attribute SVGRect zoomRectScreen;
  readonly attribute float previousScale;
  readonly attribute SVGPoint previousTranslate;
  readonly attribute float newScale;
  readonly attribute SVGPoint newTranslate;
};

attributs
readonly SVGRect zoomRectScreen

Le rectangle de zoom spécifié en unités de l'écran.

L'objet en question et son contenu sont tous deux en lecture seule.

readonly float previousScale
Le facteur d'échelle de l'opération de zoom précédente qui était en vigueur avant que l'opération de zoom ne survienne.
readonly SVGPoint previousTranslate

Les valeurs de translation de l'opération de zoom précédente qui était en vigueur avant que l'opération de zoom ne survienne.

L'objet en question et son contenu sont tous deux en lecture seule.

readonly float newScale
Le facteur d'échelle qui sera en vigueur après que l'opération de zoom a été réalisée.
readonly SVGPoint newTranslate

Les valeurs de translation qui seront en vigueur après que l'opération de zoom a été réalisée.

L'objet en question et son contenu sont tous deux en lecture seule.