18 Scripts

18.1 Introduction aux scripts

script client - un programme qui peut accompagner un document HTML ou être intégrés directement en elle. Ce programme fonctionne sur la machine cliente lors du chargement de documents, ou à d'autres moments, par exemple lorsque le lien est activé. Prise en charge des scripts HTML ne dépend pas du langage de script.

Scripts offrent auteurs un moyen d'améliorer l'interactivité des documents HTML. Par exemple:

  • Les scripts peuvent être évalués au cours du chargement des documents et de changer dynamiquement le contenu du document.
  • Les scripts peuvent être utilisés sous la forme de données d'entrée pour le traitement. Les concepteurs peuvent dynamiquement remplir les champs de formulaire en fonction des valeurs des autres champs. Ils peuvent vérifier si les données d'entrée se situent dans une plage prédéterminée de valeurs des champs correspondant, etc.
  • Les scripts peuvent inclure des événements qui affectent le document, telles que le chargement, le déchargement, l'élément objectif, le mouvement de la souris, etc.
  • Les scripts peuvent se lier pour former des contrôles (par exemple, des boutons) pour représenter les éléments de l'interface utilisateur.

Les auteurs peuvent joindre à un document HTML, deux types de scripts:

  • Les scripts sont exécutées une fois lorsque le document est chargé par l'agent utilisateur. Les scripts sont décrits dans l'élément SCRIPT , exécuté lorsque le document est chargé. L'agent utilisateur ne gère pas les scripts, les auteurs peuvent définir le contenu alternatif via l'élément d' un NOSCRIPT .
  • Scripts exécutés chaque fois qu'un événement particulier se produit. Ces scripts peuvent être affectés à un certain nombre d'éléments ayant les attributs des événements internes .

Remarque. De plus amples détails sont donnés dans les sections sur les scripts macro .

18.2 documents de conception pour les agents utilisateurs qui prennent en charge les scripts

Les sections suivantes sont des agents utilisateurs qui gèrent les scripts.

18.2.1 Element SCRIPT

  <L'ELEMENT! Le SCRIPT - - % Script;
  - Le script d'expression ->
 <! ATTLIST SCRIPT
  le charset % Charset;
  #IMPLIED - Le codage de caractères de ressource liée -
  du type % ContentType;
  #REQUIRED - Type de contenu du langage de script -
  la langue d' un CDATA #IMPLIED - nom seripta langue prédéfinie -
  src % l'URI;
  #IMPLIED - URI script externe -
  l'defer (l'defer) #IMPLIED - agent utilisateur peut différer l'exécution du script -
  >

Balise de début: obligatoire, balise fermante: obligatoire

les définitions d' attributs

src = les uri [CT]
Cet attribut spécifie l'emplacement d'un script externe.
du type = le contenu du type [CI]
Cet attribut spécifie le contenu de l'élément du langage de script, et a préséance sur la langue du script, la valeur par défaut. langage de script est spécifié comme un type de contenu (par exemple, "text / javascript"). Les auteurs doivent indiquer la valeur de cet attribut. La valeur par défaut est pas spécifiée pour cet attribut.
langue = cdata [CI]
Non recommandé. Cet attribut spécifie le langage de script du contenu de l'élément. Sa valeur est l'identificateur de langue, mais comme identificateurs ne sont pas standardisés, cet attribut est indésirable, à la place , vous devez utiliser l'attribut type.
l'defer [CI]
Si cet attribut booléen est défini, il fournit une indication pour l'agent utilisateur que le script ne sera pas générer le contenu du document (par exemple, "document.write" en javascript) et donc l'agent utilisateur peut continuer l'analyse et la présentation du document.

Attributs définis ailleurs

Element SCRIPT mettre le script dans le document. Cet élément peut être spécifié dans l'élément HEAD ou BODY d'un document HTML à plusieurs reprises.

Le script peut être défini dans l'élément de contenu SCRIPT ou dans un fichier externe. Si aucun attribut est défini src , les agents utilisateurs doivent interpréter le contenu de l'élément que le script. Si l'attribut src est défini sur URI qualifié, les utilisateurs agents doivent ignorer le contenu de cet élément et de charger le script via l'URI. Notez que l'attribut charset se réfère à l' encodage des caractères du script désigné par un attribut de l'src ; il ne fait pas référence à des éléments de contenu SCRIPT .

Les scripts sont évalués noyau de script que l'agent utilisateur doit connaître.

La syntaxe des données de script dépend du langage de script.

18.2.2 Spécification du langage de script

Parce que le document HTML ne suggère pas un langage de script spécifique, documenter les auteurs doivent indiquer explicitement les agents utilisateurs la langue de chaque script. Cela peut être fait en utilisant la déclaration de script par défaut ou par une annonce locale.

script de langue par défaut  

Les auteurs doivent indiquer le langage de script pour l' ensemble du script par défaut dans le document comprennent l'annonce suivante META tag HEAD :

  <META http-equiv = "Content-Script-Type" content = "type">

où "type" - type de contenu , la langue du nom de script. Des exemples de valeurs sont "text / tcl", "text / javascript", "text / vbscript".

Si l'annonce est pas le META , la valeur par défaut peut être réglée via l' en- tête HTTP "Content-Script-Type".

  Content-Script-Type: Type

où "type" - le type de contenu nommant le langage de script.

Les agents utilisateurs devraient déterminer la langue du script pour le document par défaut en conformité avec les actions suivantes (priorité du plus haut au plus bas):

  1. Si l'annonce META donné "Content-Script-Type", la langue par défaut du script est donnée la dernière telle annonce dans le flux de caractères.
  2. Dans le cas contraire, si elle est donnée en-têtes HTTP "Content-Script-type", la langue par défaut du script est donnée la dernière telle annonce dans le flux de caractères.

Les documents qui ne précisent pas la langue par défaut du script, mais contient des éléments qui définissent l' événement interne , incorrect. Les agents utilisateurs peuvent tenter d'interpréter des scripts mal spécifiés mais ne sont pas obligatoires. Les outils doivent produire des informations sur le langage de script par défaut afin d'éviter la création de documents incorrects.

Lokalnoe langage de script classé  

Le langage de script peut être défini pour chaque élément SCRIPT du type d'attribut. Si non spécifié, la langue par défaut du script, cet attribut doit être défini pour chaque élément de la SCRIPT . Si vous définissez la langue par défaut du script, l'attribut type a la priorité sur elle.

Dans cet exemple, nous déclarons le langage de script par défaut: "text / tcl". L' en- tête comprend les éléments du SCRIPT , le script lui-même se trouve dans un fichier externe et utilise le langage "text / vbscript". En outre, l' un de l'élément SCRIPT dans le corps du document et l'autre contient un script écrit en "text / javascript".

  <! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.0 // EN"
  "Http://www.w3.org/TR/REC-html40/strict.dtd">
 <HTML>
 <HEAD>
 <TITLE> scripts Document </ TITLE>
 <META http-equiv = "Content-Script-Type" content = "text / tcl">
 <Script type = "text / vbscript" src = "http://someplace.com/progs/vbcalc">
 </ SCRIPT>
 </ HEAD>
 <BODY>
 <Script type = "text / javascript">
 ... Code JavaScript ... </ SCRIPT>

 </ BODY>
 </ HTML>

Liens de script sur les éléments HTML  

Chaque langage de script a ses propres conventions pour faire référence à des objets HTML dans le script. Cette spécification ne définit pas un mécanisme standard pour les références d'objets HTML.

Cependant, les scripts doivent se référer aux éléments en conformité avec le nom d'objet. Scripts noyau doit se conformer à l'identification de l'élément de règles de priorité suivant: attribut nom a la priorité sur l'attribut id , si ces deux attributs sont définis. Sinon, l'attribut défini.

18.2.3 Les événements internes

Remarque. Dit l'auteur de documents HTML dans le domaine des événements internes (par exemple, en relation avec les événements du script) est très susceptible de changer. Les travaux dans ce domaine est effectuée par les membres du W3C (W3C Document Object Model du groupe de travail ) Groupe de travail sur le modèle objet de document (plus d' informations peuvent être trouvées sur le site Web au W3C http://www.w3.org/ ).

les définitions d' attributs

onload = le script [CT]
événement Onload se produit lorsque l'agent utilisateur se termine le chargement d' une fenêtre ou tout élément de châssis d' un FRAMESET . Cet attribut peut être utilisé dans les éléments de BODY et un FRAMESET .
onunload = le script [CT]
événement onunload se produit lorsque l'agent utilisateur supprime dokumentiz fenêtre ou un cadre. Cet attribut peut être utilisé dans les éléments de BODY et un FRAMESET .
onclick = le script [CT]
L'événement onclick se produit quand un seul clic d'un bouton sur l'élément de dispositif de pointage. Cet attribut peut être utilisé avec la plupart des éléments.
ondblclick = le script [CT]
événement ondblclick se produit lorsque vous double-cliquez sur le bouton du périphérique de pointage sur un élément. Cet attribut peut être utilisé avec la plupart des éléments.
onmousedown = le script [CT]
onMouseDown se produit lorsque le dispositif de pointage est pressé sur un bouton d'élément. Cet attribut peut être utilisé avec la plupart des éléments.
onmouseup = le script [CT]
événement OnMouseUp se produit lorsque vous relâchez le bouton de dispositif de pointage sur un élément. Cet attribut peut être utilisé avec la plupart des éléments.
onmouseover = le script [CT]
événement onmouseover se produit lorsque le dispositif de pointage est déplacé sur un élément. Cet attribut peut être utilisé avec la plupart des éléments.
onmousemove = le script [CT]
événement OnMouseMove se produit lorsque vous déplacez le dispositif de pointage alors qu'il est sur cet élément. Cet attribut peut être utilisé avec la plupart des éléments.
onmouseout = le script [CT]
événement onmouseout se produit lorsque le dispositif de pointage est déplacé à l' extérieur de l'élément. Cet attribut peut être utilisé avec la plupart des éléments.
l'onfocus = le script [CT]
événement onfocus se produit quand un élément reçoit le focus par un dispositif de pointage ou d' un entonnoir. Cet attribut peut être utilisé avec les éléments suivants: LABEL , INPUT , SELECT, le TEXTAREA et à BUTTON .
le onblur = le script [CT]
OnBlur événement se produit lors de la commutation focus de cet élément en utilisant le dispositif de pointage ou d' un entonnoir. Il peut être utilisé avec les mêmes éléments que onfocus.
onkeypress = le script [CT]
événement OnKeyPress se produit quand une touche est enfoncée et relâchée sur un élément. Cet attribut peut être utilisé avec la plupart des éléments.
onkeydown = le script [CT]
événement OnKeyDown se produit quand une touche est pressée sur l'élément. Cet attribut peut être utilisé avec la plupart des éléments.
onkeyup = le script [CT]
événement OnKeyUp se produit quand une touche est relâchée sur un élément. Cet attribut peut être utilisé avec la plupart des éléments.
l'onsubmit = le script [CT]
événement onSubmit se produit quand un formulaire est soumis. Il est utilisé uniquement dans l'élément FORM .
onreset = le script [CT]
événement onreset se produit quand un formulaire est réinitialisé. Il est utilisé uniquement dans l'élément FORM .
onselect = le script [CT]
événement onSelect se produit lorsque l'allocation de l' utilisateur d'un texte dans un champ de texte. Cet attribut peut être utilisé avec des éléments ENTREE et l'TEXTAREA .
le onchange = le script [CT]
Onchange événement se produit lorsque la perte d'entrée élément de commande de focalisation, si sa valeur a été modifiée à partir du moment de la réception de la mise au point. Cet attribut est utilisé avec les éléments suivants: INPUT , SELECT et le TEXTAREA .

L'action peut être attribuée à un certain nombre d'événements spécifiques qui se produisent lorsqu'un utilisateur interagit avec l'agent. La valeur de chacun des "événement interne" mentionné ci-dessus est le script. Ce script est exécuté lorsque l'événement se produit pour cet élément. La syntaxe du script dépend du langage de script.

Les contrôles , tels que INPUT , SELECT , à BUTTON , le TEXTAREA , et LABEL répondent aux événements internes. Si elles ne figurent pas dans la forme, ils peuvent être utilisés pour améliorer la doumenta GUI.

Par exemple, les auteurs des documents peuvent inclure des boutons qui sont utilisés pour soumettre le formulaire, mais lorsque vous appuyez sur ce qui se produit une certaine interaction avec le serveur.

L'exemple suivant illustre le comportement possible de l'élément de commande et l'interface utilisateur en fonction des événements internes.

Dans cet exemple, userName est un champ de texte requis. Si l'utilisateur ne remplit pas dans ce domaine, l'événement onblur appelle une fonction JavaScript pour vérifier la valeur du champ username.

  <INPUT NAME = "username" onblur = "validUserName (this.value)">

Voici un autre exemple de JavaScript:

  <INPUT NAME = "num"
  onchange = "if (! checkNum (this.value, 1, 10)) 
  {This.focus (); this.select ();} else {merci ()} "
  VALUE = "0">

Voici un exemple d'un gestionnaire d'événements pour un champ de texte dans le VBScript de langue:

  <Input name = size "de edit1" = "50"> 
  <Script type = "text / vbscript">
  Sous edit1_changed ()
  Si edit1.value = "abc" Ensuite,
  button1.enabled = True
  autre
  button1.enabled = False
  End If
  End Sub
  </ SCRIPT>

Voici le même exemple en utilisant Tcl:

  <Input name = size "de edit1" = "50">
  <Script type = "text / tcl">
  proc edit1_changed {} {
  si {[valeur edit] == ​​abc} {
  button1 activer 1
  } Else {
  button1 activer 0
  }
  }
  edit1 onChange edit1_changed
  </ SCRIPT>

Voici la liaison d'un script en JavaScript un événement par exemple. Pour commencer avec un simple clic de souris gestionnaire:

 
 <Type BUTTON = "button" name = valeur "mybutton" = "10">
 <Script type = "text / javascript">
  fonction my_onclick () {
  .  .  .
  }
  document.form.mybutton.onclick = my_onclick
  </ SCRIPT>
  </ BUTTON>

Voici un gestionnaire de fenêtre plus intéressant:

 
 <Script type = "text / javascript">
  fonction my_onload () {
  .  .  .
  }
  var win = window.open ( "certains / autre / URI")
  si (victoire) win.onload = my_onload
 </ SCRIPT>

En Tcl langue est la suivante:

  <Script type = "text / tcl">
  proc my_onload {} {
  .  .  .
  }
  définir gagner [fenêtre ouverte "un / autre / URI"]
  si {$ gagner! = ""} {
  $ Win onload my_onload
  }
  </ SCRIPT>

Notez que l'expression «document.write» ou des expressions équivalentes dans les gestionnaires d'événements internes créent et opèrent une nouvelle entrée dans le document et ne changent pas le courant.

18.2.4 Modification dynamique des documents

Les scripts sont exécutés lorsque le document est chargé, peut modifier dynamiquement le contenu du document. Cette possibilité dépend de la langue du script (par exemple, l'expression "document.write" dans le modèle d'objet HTML pris en charge par certains fournisseurs).

Les changements dynamiques dans le document peuvent être modélisées comme suit:

  1. Tous les éléments SCRIPT sont évalués afin que le document est chargé.
  2. Évalue tous les scripts de construction dans cet élément le SCRIPT , générer SGML CDATA. Le texte généré est inséré dans le document à la place de l'élément SCRIPT .
  3. Le CDATA généré sont évalués à nouveau.

Les documents HTML sont limités à l'exigence de conformité avec les éléments HTML DTD avant et après avoir manipulé le SCRIPT .

L'exemple suivant illustre comment les scripts peuvent modifier un document dynamique. Le script suivant:

  <TITLE> document de test </ TITLE>
  <Script type = "text / javascript">
  document.write ( "<p> <b> Bonjour tout le monde! <\ / b>")
  </ SCRIPT>

Il a le même effet que le balisage HTML:

  <TITLE> document de test </ TITLE>
  <P> <B> Bonjour tout le monde! </ B>

18.3 documents de conception pour les agents utilisateurs qui ne supportent pas les scripts

Les sections suivantes abordent la création de documents pour les agents utilisateurs qui ne supportent pas les scripts.

18.3.1 Element NOSCRIPT

  <L'ELEMENT! A NOSCRIPT - - ( % block; ) +
  - Contenu alternatif pour présentation sans scripts ->
 <! ATTLIST NOSCRIPT
  % attrs;
  - % Coreattrs , % i18n , % events -
  >

Balise de début: obligatoire, balise fermante: obligatoire

Element NOSCRIPT permet aux auteurs de spécifier un autre contenu lorsqu'un script est pas exécuté. élément contenu NOSCRIPT doit être généré par les agents utilisateurs qui prennent en charge les scripts, seulement dans les cas suivants:
  • L'agent utilisateur est configuré pour ne pas exécuter les scripts.
  • L'agent utilisateur ne supporte pas le langage de script élément utilisé du SCRIPT .

Les agents utilisateurs qui ne supportent pas les scripts clients doivent présenter le contenu de cet élément.

Dans l'exemple suivant, un agent d'utilisateur de l' élément SCRIPT , inclus dans le document de données générées dynamiquement. Si l'agent utilisateur ne supporte pas les scripts, l'utilisateur peut télécharger la liaison de données.

  <Script type = "text / tcl">
  ... Skirpt en langage Tcl insérer des données ... </ SCRIPT>

 <NOSCRIPT>
  <P> Accès à <A de données href="http://someplace.com/data">. </A>
 </ NOSCRIPT>

18.3.2 Comment cacher le script à partir des agents utilisateurs

Les agents utilisateurs qui ne reconnaissent pas l'élément SCRIPT , peuvent présenter sous la forme de texte. Certains scripts noyau, y compris le noyau pour le langage JavaScript, VBScript, et Tcl, les scripts vous permettent d'inclure l'expression commentaire SGML. Les agents utilisateurs qui ne reconnaissent pas l'élément SCRIPT , ignoreront les commentaires, et le script trouve le noyau et l' exécuter.

Une autre solution à ce problème est de garder les scripts dans des documents externes et de les relier à attribuer le src .

Commentant les scripts JavaScript
Noyau JavaScript permet l'utilisation de la chaîne "<! -" Et le début de l'élément SCRIPT, et ignore d'autres caractères jusqu'à la fin de la ligne. JavaScript interprète le symbole "//" comme le début d'un commentaire prolongeant jusqu'à la fin de la ligne courante. Il est nécessaire que la chaîne "->" ne comprenait pas la syntaxe JavaScript parser.

  <Script type = "text / javascript">
 <! - Contenu Masquer de script à partir de vieux navigateurs
  carré de fonction (i) {
  document.write ( "L'appel passé", i, "à la fonction.", "<BR>")
  retourne i * i
  }
  document.write ( "La fonction retourne", carré (5), ".")
 // Fin du contenu caché ->
 </ SCRIPT>

scripts Commentant dans VBScript
Dans VBScript, l'ensemble du texte du commentaire est considéré, en commençant par un seul caractère de devis à la fin de la ligne. Il peut être utilisé pour commenter la chaîne "->" à partir de VBScript, naprmer:

  <Script type = "text / vbscript">
  <! -
  Sous foo ()
  ...
  End Sub
  '->
  </ SCRIPT>

scripts Commentant dans TCL
En Tcl, le texte du commentaire est considéré comme le symbole "#" avant la fin de la ligne:

  <Script type = "text / tcl">
 <! - Contenu Masquer de script à partir de vieux navigateurs
  proc carré {i} {
  le document d'écriture "L'appel a adopté $ i à la fonction. <BR>"
  retour [expr $ i * $ i]
  }
  le document d'écriture "La fonction retourne [carré 5]."
 # Fin du contenu latent ->
 </ SCRIPT>

Remarque. Certains navigateurs trouvent la fin des premiers commentaires ">" symbole. Dans ce cas, vous pouvez déplacer les opérandes pour les opérateurs relationnels et changement (par exemple, en utilisant "y <x" au lieu de "x> y") ou utiliser une certaine langue dans les solutions de contournement de script caractère ">".