Академический Документы
Профессиональный Документы
Культура Документы
Module CAAOO
HTML et JavaScript
par
Michel Futtersack
Matre de Confrences en Informatique
Universit Paris 5 Ren Descartes
NB : Cette partie est un extrait de la spcification W3C de HTML 4.01.J'ai reformul certains passages
ou ajout des explications supplmentaires. Vous trouverez la version franaise complte du document
l'adresse : http://www.la-grange.net/w3c/html4.01/
Introduction HTML 4
La structure globale d'un document
Le texte
Les listes
Les tables
Les liens
Les objets, les images et les applets
Les feuilles de style
L'alignement, le style des polices et les rgles horizontales
Les cadres
Les formulaires
Les scripts
Index des lments
Index des attributs
1 Introduction HTML 4
Sommaire
1.
2.
3.
4.
un systme de nommage uniforme pour leur localisation sur le Web (par exemple, les URI) ;
2.
3.
des protocoles, pour accder des ressources nommes dont on possde l'adresse (par exemple,
HTTP)
l'hypertexte, pour faciliter la navigation entre ces ressources (par exemple, HTML).
Prenons, pour exemple, l'URI qui dsigne la page des rapports techniques du W3C :
http://www.w3.org/TR
Cet URI peut tre compris comme suit : il est disponible via le protocole HTTP, hberg sur la machine
nomme www.w3.org et accessible sur un disque dur de celle-ci par le chemin "/TR". On peut
rencontrer d'autres systmes dans les documents HTML, par exemple, comme "mailto" pour un e-mail ou
"ftp" pour le protocole FTP.
Voici un autre exemple d'URI, qui pointe sur la bote aux lettres d'un utilisateur :
<a href="mailto:jean@quelquepart.com">Jean BON</a>.
Remarque : Vous connaissez probablement le terme URL et non le terme URI . Les URL forment
un sous-ensemble du systme de nommage plus gnral URI.
1.1.2 Les identifiants de fragment
Certains URI se rapportent un endroit dans une ressource. Ce genre d'URI se termine par un caractre
# , suivi par l'identifiant d'une ancre (appel identifiant de fragment ). Par exemple, voici un URI qui
pointe sur l'ancre section_2 de la page top.html :
http://unsite.com/html/top.html#section_2
1.1.3 Les URI relatifs
Un URI relatif ne comporte pas de nom de protocole ni de nom de machine. Son chemin se rapporte
gnralement une ressource disponible sur la mme machine que le document courant. Les liens relatifs
peuvent comporter d'autres composants de chemin relatifs (par exemple, ces caractres .. signifient le
niveau suprieur dans la hirachie dfinie par le chemin) et des identifiants de fragment.
Les URI relatifs se rsolvent en URI complets, en utilisant l'URI de base. Comme exemple de rsolution
d'URI relatif, prenons l'URI de base : "http://www.acme.com/support/intro.html". Dans le balisage de lien
hypertexte ci-dessous :
<a href="fournisseurs.html">Fournisseurs</a>
l'URI relatif se dvelopperait en l'URI complet "http://www.acme.com/support/fournisseurs.html", tandis
que pour le balisage de l'image ci-dessous :
<img src="../icones/logo.gif" alt="logo">
l'URI relatif se dvelopperait en l'URI complet "http://www.acme.com/icones/logo.gif".
En HTML, les URI s'utilisent pour :
publier des documents en ligne possdant des titres, du texte, des tables, des listes, des photos,
etc.
ramener des informations en ligne via des liens hypertextes avec un clic ;
concevoir des formulaires pour conduire des transactions avec des services distants, dans le but
de rechercher des informations, de faire des rservations, de prendre des commandes, etc.
inclure des feuilles de calculs, des squences vidos ou sonores et d'autres applications,
directement dans les documents.
1.3.2 L'accessibilit
Au fur et mesure de la croissance de la communaut du Web et de la diversification des capacits et
aptitudes de ses membres, il devient crucial que les technologies employes soient appropries leurs
besoins spcifiques. Le langage HTML a t conu pour rendre les pages Web plus accessibles ceux qui
ont des dficiences physiques. Les dveloppements de HTML 4 qui ont t inspirs par ce souci de
l'accessibilit comprennent :
Les auteurs qui composent des pages en tenant compte de ces notions d'accessibilit ne seront pas
seulement remercis par les utilisateurs intresss mais en retireront aussi d'autres bnfices : les
documents HTML bien conus, qui distinguent la structure de la prsentation, s'adapteront plus
facilement aux nouvelles technologies.
1.3.3 Les tables
Les auteurs disposent maintenant d'un plus grand contrle sur leur structure et leur disposition (par
exemple, les regroupements de colonnes). La possibilit dont disposent les auteurs de spcifier la largeur
des colonnes permet aux agents utilisateurs (navigateurs web ou autres) d'afficher les donnes de table
progressivement (au fur et mesure du chargement), plutt que d'attendre le chargement entier de la table
avant de pouvoir la restituer.
1.3.4 Les documents composs
Le langage HTML offre maintenant une structure standard pour l'incorporation d'objets mdia et
d'applications gnriques dans les documents HTML. L'lment OBJECT (de mme que ses anctres, les
lments plus spcifiques IMG et APPLET) fournit le moyen d'inclure des images, des squences vido,
de l'audio, des mathmatiques, des applications spcialises et d'autres objets dans un document. Il
permet aussi aux auteurs de spcifier une hirarchie de restitutions de remplacement aux agents
utilisateurs qui ne grent pas certaines restitutions particulires.
1.3.5 Les feuilles de styles
Les feuilles de styles simplifient le balisage HTML et soulagent grandement HTML des responsabilits
de la prsentation. Elles donnent aux auteurs comme aux utilisateurs le contrle de la prsentation des
documents -- informations sur les polices de caractres, alignement, couleurs, etc.
Les informations de style peuvent tre spcifies pour un lment ponctuel ou pour des groupes
d'lments. Elles peuvent se trouver l'intrieur du document HTML ou dans une feuille de styles
externe.
Les mcanismes, qui associent une feuille de styles un document, sont indpendants du langage de
feuille de style.
Avant l'apparition des feuilles de styles, les auteurs disposaient d'un contrle limit sur la restitution des
pages. HTML 3.2 comprenait un certain nombre d'attributs et d'lments permettant un contrle de
l'alignement, de la taille de la police de caractres et de la couleur du texte. Les auteurs abusaient
galement de tables et d'images pour la mise en page. Le temps relativement long ncessaire pour que les
utilisateurs mettent jour leurs navigateurs implique que ces usages vont perdurer encore pendant un
certain temps. Cependant, puisque les feuilles de styles offrent des moyens de prsentation plus puissants,
le World Wide Web Consortium fera graduellement disparatre nombre d'lments et d'attributs de
prsentation HTML. Tout au long de ce document, les lments et attributs concerns sont marqus
comme dconseills . Ils sont gnralement accompagns d'exemples montrant comment parvenir au
mme rsultat en utilisant d'autres lments ou les feuilles de styles.
1.3.6 Les scripts
Au travers de scripts, les auteurs peuvent concevoir des pages Web dynamiques (par exemple, des
formulaires intelligents qui ragissent au cours de leur remplissage par l'utilisateur) et utiliser HTML
comme support d'applications en rseau.
Les mcanismes fournis pour associer HTML et scripts sont indpendants du langage de script.
1.3.7 L'impression
Les auteurs voudront parfois aider l'utilisateur dans l'impression d'autres documents, en plus du document
courant. Lorsque des documents font partie d'un ensemble, on peut dcrire leurs relations en utilisant
l'lment HTML LINK ou encore en utilisant le cadre de description des ressources (RDF) du W3C .
1.4 La cration de document avec HTML 4
Nous recommandons aux auteurs et aux dveloppeurs d'observer les principes gnraux suivants dans
leur travail avec HTML 4.
1.4.1 Sparer la structure et la prsentation
Le langage HTML trouve ses racines dans SGML qui a toujours t un langage destin la spcification
d'un balisage de structures. Avec la maturit, les lments et attributs de prsentation HTML sont de plus
en plus remplacs par d'autres mcanismes, en particulier les feuilles de styles. L'exprience montre que
la sparation de la structure d'un document de sa prsentation permet de rduire les cots de diffusion
vers un grand ventail de plates-formes, de mdias, etc., et facilite la mise jour des documents.
1.4.2 Considrer l'accs universel au Web
De manire rendre le Web plus accessible tous, notamment aux personnes avec un handicap physique,
les auteurs devraient prendre en compte la faon dont leurs documents seront interprts sur une grande
varit de plates-formes : les navigateurs commands la voix, les lecteurs en Braille, etc. Nous ne
demandons pas aux concepteurs de brider leur crativit, seulement que leurs crations intgrent les
restitutions alternatives. HTML propose nombre de mcanismes cet effet (par exemple, les attributs alt,
accesskey, etc.)
En outre, les auteurs devraient garder l'esprit que leurs documents peuvent aussi toucher des publics
loigns, dont les ordinateurs sont configurs trs diffremment. Pour qu'un document soit correctement
interprt, les auteurs devraient y inclure des informations sur la langue naturelle et le sens d'criture, sur
l'encodage employ et d'autres aspects relatifs l'internationalisation.
1.4.3 Aider les agents utilisateurs dans la restitution progressive
En concevant soigneusement leurs tables et en faisant appel aux nouvelles fonctionnalits des tables de
HTML 4, les auteurs peuvent aider les agents utilisateurs (navigateurs Web ou autres) restituer les
documents plus rapidement. Les auteurs peuvent apprendre concevoir des tables pour leur restitution
progressive (voir l'lment TABLE).
4.
Des blancs (les espaces, les sauts de ligne, les tabulations et les commentaires) peuvent survenir avant ou
aprs chaque section.
Voici un exemple de document HTML simple :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Mon premier document HTML</title>
</head>
<body>
<p>Bonjour tout le monde !
</body>
</html>
Ce texte peut tre ralis avec n'importe quel diteur de texte et sauvegard dans un fichier toto.htm ou
toto.html. Ce fichier peut ensuite tre ouvert dans un navigateur Web (menu Fichier->Ouvrir un fichier)
qui fera le rendu ("rendering") de ce document HTML en une page Web.
Il est beaucoup plus commode d'utiliser un logiciel spcialis pour l'dition de pages HTML. Il en existe
de nombreux, dont les plus connus sont FrontPage de Microsoft et DreamWeaver de Macromdia. Je
vous recommande fortement d'utiliser le logiciel gratuit et multiplateforme KOMPOSER (anciennement
appel Nvu) (http://sourceforge.net/projects/kompozer/) qui fait partie du projet Mozilla. Quand on cr
un nouveau document HTML, la structure de base (informations de version, balises <html><head>, etc)
est gnre automatiquement. Voici une copie d'cran montrant le source ci-dessus.
Remarquez que les balises sont en minuscules. HTML n'est pas sensible la casse. Par contre, le
langage XHTML, qui va supplanter de plus en plus HTML, est sensible la casse : les balises
doivent tre crites en minuscules. Les diteurs HTML rcents crivent donc par dfaut les balises en
minuscules, ce qui permettra par la suite de traduire plus facilement les documents HTML en documents
XHTML.
2.2 Les informations de version HTML
Un document HTML valide dclare la version HTML qui est utilise dans le document. La dclaration
de type de document indique la dfinition de type de document (DTD) en vigueur pour le document.
HTML 4.01 spcifie trois DTD et les auteurs doivent donc inclure l'une des dclarations de type de
document suivantes dans leurs documents. Les DTD varient selon les lments qui y sont grs.
Le DTD HTML 4.01 strict comprend tous les lments et attributs qui ne sont pas dconseills
ou bien ceux qui n'apparaissent pas dans les documents avec jeu d'encadrement. Pour les
documents qui utilisent ce DTD, prendre la dclaration de type de document suivante :
Le DTD HTML 4.01 transitoire inclut la totalit du DTD strict auquel se rajoutent les lments
et attributs dconseills (la plupart d'entre eux concernant la prsentation visuelle). Pour les
documents qui utilisent ce DTD, prendre la dclaration de type de document suivante :
Le DTD HTML 4.01 de jeu d'encadrement inclut la totalit du DTD transitoire plus les cadres.
Pour les documents qui utilisent ce DTD, prendre la dclaration de type de document suivante :
On peut utiliser l'attribut lang avec l'lment META pour spcifier la langue de la valeur de l'attribut
content. Ceci permet aux synthtiseurs de parole d'appliquer des rgles de prononciation en fonction de la
langue.
Dans cet exemple, le nom de l'auteur est annonc comme tant en franais :
<meta name="Auteur" lang="fr" content="Arnaud Le Hors">
10
11
Les documents qui contiennent des jeux d'encadrement remplacent l'lment BODY par l'lment
FRAMESET.Consulter la section 10 sur les cadres pour plus d'informations.
2.4.2 Les identifiants des lments : les attributs id et class
L'attribut id a plusieurs rles dans HTML :
L'attribut class, au contraire, assigne un ou plusieurs noms de classe un lment ; on peut dire de
l'lment qu'il appartient ces classes. Un nom de classe peut tre partag par plusieurs instances
d'lments. L'attribut class a plusieurs rles dans HTML :
comme slecteur dans une feuille de style (quand l'auteur souhaite assigner une information de
style un ensemble d'lments) ;
pour un traitement universel par les agents utilisateurs .
Dans l'exemple suivant, on utilise l'lment SPAN en conjonction avec les attributs id et class pour
baliser les messages d'un document. Les messages apparaissent la fois en version anglaise et en version
franaise.
<!-- Messages en anglais -->
<p><span id="msg1" class="info" lang="en">Variable declared twice</span>
<p><span id="msg2" class="warning" lang="en">Undeclared variable</span>
<p><span id="msg3" class="erreur" lang="en">Bad syntax for variable name</span>
<!-- Messages en franais -->
<p><span id="msg1" class="info" lang="fr">Variable déclarée deux fois</span>
<p><span id="msg2" class="warning" lang="fr">Variable indéfinie</span>
<p><span id="msg3" class="erreur" lang="fr">Erreur de syntaxe pour variable</span>
Les rgles de style CSS suivantes indiqueraient aux agents utilisateurs
informatifs en vert, ceux d'avertissement en jaune et ceux d'erreur en rouge :
12
<body>
<pre class="exemple" id="exemple-1">
...exemple de code ici...
</pre>
</body>
En spcifiant l'attribut id de cet exemple, on peut (1) crer un hyperlien vers celui-ci et (2) surclasser
l'information de style de la classe par une information de style sur l'instance.
2.4.3 Les lments de bloc et les lments en-ligne
Certains lments HTML, qui peuvent apparatre dans l'lment BODY, sont dits tre de niveau bloc
[block-level] tandis que d'autres sont dits de niveau en-ligne [inline] (aussi connu comme sous le nom
niveau texte ). La distinction se fondent sur plusieurs notions :
Le modle de contenu
De manire gnrale, les lments de bloc peuvent contenir des lments en-ligne et d'autres
lments de bloc. Et de manire gnrale, les lments en-ligne ne peuvent contenir que des
donnes et d'autres lments en-ligne. L'ide inhrente cette distinction structurelle, c'est que
les lments de bloc crent des structures plus grandes que les lments en-ligne.
Le formatage
Par dfaut, les lments de bloc sont formats diffremment des lments en-ligne. En gnral,
les lments de bloc commencent sur une nouvelle ligne, et non les lments en-ligne. Pour des
informations concernant les blancs, les sauts de ligne et le formatage des blocs, veuillez
consulter la section sur le texte.
2.4.4 Le regroupement des lments : les lments DIV et SPAN
Les lments DIV et SPAN, en conjonction avec les attributs id et class, offrent un mcanisme gnrique
qui rajoute de la structure aux documents. Ces lments dfinissent le contenu comme tant en-ligne
(SPAN) ou de bloc (DIV) mais n'imposent aucune autre expression de prsentation sur le contenu. Ainsi,
les auteurs peuvent utiliser ceux-ci en conjonction avec les feuilles de style, l'attribut lang, etc., pour
exploiter HTML selon leurs besoins et leurs gots propres.
Supposons, par exemple, que nous voulions gnrer un document HTML partir d'une base de donnes
des informations de clientle. Comme HTML ne comprend pas d'lments identifiant des objets tels que
client , numro de tlphone , adresse e-mail , etc., nous utilisons les lments DIV et SPAN
pour obtenir les effets de structure et de prsentation dsirs. Nous pourrions utiliser l'lment TABLE
comme suit pour structurer les informations :
<!-- Exemple de donnes issues de la base client : -->
<!-- Nom : Stphane Boyera, Tl. : (212) 555-1212, E-mail : sb@foo.org -->
<div id="client-boyera" class="client">
<p><span class="client-title">Informations sur le client :</span>
<table class="client-data">
<tr><th>Nom : <td>Boyera</tr>
<tr><th>Prnom : <td>Stphane</tr>
<tr><th>Tl. : <td>(212) 555-1212</tr>
<tr><th>E-mail: <td>sb@foo.org</tr>
</table>
</div>
<div id="client-lafon" class="client">
<p><span class="client-title">Informations sur le client :</span>
<table class="client-data">
<tr><th>Nom : <td>Lafon</tr>
<tr><th>Prnom : <td>Yves</tr>
<tr><th>Tl. : <td>(617) 555-1212</tr>
<tr><th>E-mail : <td>yves@coucou.com</tr>
</table>
</div>
13
Par la suite, nous pourrons facilement rajouter des dclarations de feuilles de style pour affiner la
prsentation de ces entres de la base de donnes.
Les agents utilisateurs visuels placent en gnral un saut de ligne avant et aprs l'lment DIV, par
exemple :
<p>aaaaaaaaa<div>bbbbbbbbb</div><div>ccccc<p>ccccc</div>
ce qui est typiquement restitu par :
aaaaaaaaa
bbbbbbbbb
ccccc
ccccc
2.4.5 Les titres : les lments H1, H2, H3, H4, H5 et H6
Un lment de titre dcrit brivement le sujet de la section qu'il introduit. Les agents utilisateurs peuvent
utiliser les informations des titres pour, par exemple, construire automatiquement la table des matires du
document.
Il existe six degrs de titrage dans HTML, l'lment H1 reprsentant le titre le plus important et H6 le
moins important. Les navigateurs visuels restituent gnralement les titres les plus importants dans un
corps plus grand que les moins importants.
L'exemple suivant montre comment employer l'lment DIV pour associer un titre la section du
document qui le suit. De cette manire, on peut dfinir un style pour la section (colorer l'arrire-plan,
fixer la police, etc.) au moyen d'une feuille de style.
<div class="section" id="elephants-foret" >
<h1>Les lphants des forts</h1>
<p>Dans cette partie, nous abordons le sujet moins connu
des lphants des forts.
...la section continue...
<div class="sous-section" id="habitat-foret" >
<h2>L'habitat</h2>
<p>Les lphants des forts ne vivent pas
dans les arbres mais au milieu d'eux.
...la sous-section continue...
</div>
</div>
On peut dcorer cette structure en utilisant les informations de style suivantes :
<head>
<title>... titre du document...</title>
<style type="text/css">
div.section { text-align: justify; font-size: 12pt}
div.sous-section { text-indent: 2em }
h1 { font-style: italic; color: green }
h2 { color: green }
</style>
</head>
2.4.6 L'lment ADDRESS
Les auteurs peuvent employer l'lment ADDRESS pour fournir les informations de contact du document
ou d'une partie essentielle de celui-ci, comme un formulaire. Cet lment apparat souvent au dbut ou
la fin du document.
Par exemple, une page du site Web du W3C relative HTML pourrait contenir les informations de
contact suivantes :
<address>
<a href="../People/Raggett/">Dave Raggett</a>,
<a href="../People/Arnaud/">Arnaud Le Hors</a>,
personnes contacter pour l'<a href="activite">activit HTML du W3C</a><br>
$Date : 1999/12/24 23:07:14 $
</address>
14
3 Le texte
Sommaire
1.
2.
3.
Les blancs
Le texte structur
1. Les phrases : les lments EM, STRONG, DFN, CODE, SAMP, KBD, VAR, CITE,
ABBR, et ACRONYM
2. Les citations : les lments BLOCKQUOTE et Q
La restitution des citations
3. Les indices et les exposants : les lments SUB et SUP
Les lignes et les paragraphes
1. Les paragraphes : l'lment P
2. Le contrle des coupures de ligne
15
16
17
4 Les listes
Sommaire
1.
2.
3.
Par exemple, cette liste qui prcde est une liste non-ordonne qui a t cre l'aide de l'lment UL :
<ul>
<li>des informations non-ordonnées ;
<li>des informations ordonnées ;
<li>des définitions.
</ul>
La liste ordonne, qui est cre l'aide de l'lment OL, devrait contenir des informations dont
l'ordonnancement revt une certaine importance, comme dans une recette de cuisine :
1.
2.
3.
4.
La liste de dfinitions, qui est cre l'aide de l'lment DL, consiste gnralement en une succession de
couples terme/dfinition (mme si les listes peuvent avoir d'autres usages). Ainsi, on pourrait utiliser une
liste de dfinitions pour la publicit d'un produit :
Un cot moindre
La nouvelle version de ce produit cote infiniment moins que la prcdente !
Encore plus facile utiliser
Nous avons apport des modifications au produit qui facilitent l'extrme son utilisation !
Sans danger pour les petits
Vous pouvez laisser vos enfants dans une pice, seuls avec ce produit, et ils ne se blesseront pas
(sans garantie toutefois).
une liste qui serait dfinie en HTML par :
<dl>
<dt><strong>Un coût moindre</strong>
<dd>La nouvelle version de ce produit coûte infiniment moins
que la précédente !
<dt><strong>Encore plus facile à utiliser</strong>
<dd>Nous avons apporté des modifications au produit
qui facilitent à l'extrême son utilisation !
<dt><strong>Sans danger pour les petits</strong>
<dd>Vous pouvez laisser vos enfants dans une pièce,
seuls avec ce produit, et ils ne se blesseront pas (sans garantie toutefois).
</dl>
On peut galement imbriquer les listes et les utiliser ensemble, comme dans l'exemple suivant qui montre
une liste de dfinitions contenant une liste non-ordonne (les ingrdients) et une liste ordonne (la marche
suivre) :
18
Les ingrdients :
100 g de farine
10 g de sucre
1 tasse d'eau
2 ufs
sel, poivre
La marche suivre :
1.
2.
3.
4.
Remarques :
On peut varier la recette en y rajoutant des raisins secs.
La prsentation exacte des trois listes dpend de l'agent utilisateur. Nous dcourageons les auteurs
d'utiliser les listes simplement comme un moyen pour placer le texte en retrait. C'est une affaire de style
qui est du ressort des feuilles de style.
4.2 Les listes non-ordonnes (UL), les listes ordonnes (OL) et les items de liste (LI)
Les listes ordonnes et non-ordonnes sont restitues de manire identique, l'exception de la
numrotation des items des listes ordonnes par les agents utilisateurs visuels. Les agents utilisateurs
peuvent prsenter ces numros de diverses faons. Les listes non-ordonnes ne sont pas numrotes.
Les deux types de liste sont constitus de squences d'items de liste dfinis par l'lment LI (dont on peut
omettre la balise fermante).
Cet exemple illustre la structure de base d'une liste.
<ul>
<li> ... premier item de liste...
<li> ... deuxime item de liste...
...
</ul>
Les listes peuvent aussi s'imbriquer :
EXEMPLE DCONSEILL :
<ul>
<li> ... niveau 1, numro 1...
<ol>
<li> ... niveau 2, numro 1...
<li> ... niveau 2, numro 2...
<ol start="10">
<li> ... niveau 3, numro 10...
</OL>
<li> ... niveau 2, numro 1...
</ol>
<li> ... niveau 1, numro 2...
</ul>
Dtails sur l'ordre des numros. Dans une liste ordonne, il n'est pas possible de poursuivre
automatiquement la numrotation de la liste partir d'une liste prcdente ou encore de cacher les
numros de certains items de liste particuliers. Cependant, les auteurs peuvent rinitialiser le numro
d'un item de liste en spcifiant son attribut value. La numrotation des items suivants se poursuit alors
partir de la nouvelle valeur. Par exemple :
<ol>
<li value="30"> cet item de liste a le numro 30.
<li value="40"> cet item de liste a le numro 40.
<li> cet item de liste a le numro 41.
</ol>
19
20
Type
Style de numrotation
en chiffres arabes
1, 2, 3, ...
alphabtique en minuscules
a, b, c, ...
alphabtique en majuscules
A, B, C, ...
Remarquez que l'attribut type est dconseill et que les styles des listes devraient tre contrls par les
feuilles de style.
Par exemple, en utilisant CSS, on peut spcifier que le style des numros des items de liste devrait tre en
chiffres romains minuscules. Dans l'extrait suivant, chaque lment OL appartenant la classe "romains"
prsentera des chiffres romains devant ses items de liste.
<style type="text/css">
ol.romains { list-style-type: lower-roman;}
</style>
<body>
<ol class="romains">
<li> Numro 1...
<li> Numro 2...
</ol>
</body>
La restitution d'une liste de dfinitions dpend galement de l'agent utilisateur. Ainsi, l'exemple :
<dl>
<dt>Dweeb
<dd>Une jeune personne émotive qui peut évoluer
en un <em>nerd</em> ou un <em>geek</em>
<dt>Hacker
<dd>Un programmeur fûté
<dt>Nerd
<dd>Une personne techniquement brillante, mais socialement inepte
</dl>
celui-ci pourrait tre restitu par :
Dweeb
Une jeune personne motive qui pourrait voluer en nerd ou en geek
Hacker
Un programmeur ft
Nerd
Une personne techniquement brillante, mais socialement inepte
21
5 Les tables
Sommaire
1.
2.
3.
22
Voici une table simple qui montre certaines des caractristiques du modle de la table de HTML. Soit la
dfinition de table suivante :
<table border="1"
summary="Cette table donne quelques statistiques sur les
drosophiles : hauteur et poids moyens, et le
pourcentage de celles ayant des yeux rouges
(pour les mâles et les femelles).">
<caption><em>Une table test avec des cellules fusionnées</em></caption>
<tr><th rowspan="2"><th colspan="2">Moyenne
<th rowspan="2">Yeux<br>rouges
<tr><th>hauteur<th>poids
<tr><th>Mâles<td>1.9<td>0.003<td>40%
<tr><th>Femelles<td>1.7<td>0.002<td>43%
</table>
Cette table pourrait tre rendue comme ceci par un agent utilisateur graphique :
Restituer le sommaire dans l'attribut summary disponible l'utilisateur. Les auteurs devraient
fournir le sommaire du contenu et de la structure de la table, de sorte que les personnes utilisant
des agents utilisateurs non-visuels puissent mieux la comprendre ;
Restituer la lgende, le cas chant ;
Restituer l'en-tte de la table, le cas chant. Restituer le pied de la table, le cas chant. Les
agents utilisateurs doivent savoir o restituer l'en-tte et le pied. Par exemple, s'il s'agit d'un
mdia pagin en sortie, les agents utilisateurs peuvent placer l'en-tte en haut de chaque page, et
le pied en bas de chacune d'elles. De la mme manire, si l'agent utilisateur fournit un
mcanisme pour faire dfiler les ranges, l'en-tte peut apparatre en haut de la zone qui a dfil
et le pied en bas de celle-ci ;
Calculer le nombre de colonnes dans la table. Remarquez que le nombre de ranges dans une
table est gal au nombre d'lments TR contenus par l'lment TABLE ;
Regrouper les colonnes en fonction des ventuelles spcifications de groupe de colonnes ;
Restituer les cellules, range par range et regroupes dans les colonnes appropries, entre l'entte et le pied. Les agents utilisateurs devraient formater la table en fonction des attributs HTML
et des spcifications de la feuille de style.
Le modle de table HTML a t conu de telle sorte que les agents utilisateurs, avec l'assistance de
l'auteur, puissent restituer les tables progressivement (i.e., au fur et mesure que les ranges arrivent)
plutt que de devoir attendre la totalit des donnes avant de commencer la restitution.
Afin que l'agent utilisateur puisse formater une table en une seule passe, les auteurs doivent indiquer
l'agent utilisateur :
23
Plus prcisment, l'agent utilisateur peut restituer une table en une seule passe quand les largeurs de
colonne sont spcifies l'aide d'une combinaison d'lments COLGROUP et COL. Si ventuellement
l'une des colonnes est spcifie en termes relatif ou de pourcentage, l'auteur doit aussi spcifier la largeur
de la table en question.
La directionnalit de la table
La directionnalit d'une table est soit celle qui est hrite (par dfaut, elle est de gauche droite), soit
celle qui est spcifie par l'attribut dir de l'lment TABLE.
Pour une table de gauche--droite, la colonne zro se trouve sur le ct gauche et la range zro se trouve
en haut. Pour une table de droite--gauche, la colonne zro se trouve sur le ct droit et la range zro en
haut.
Quand l'agent utilisateur alloue des cellules supplmentaires une range, ces cellules supplmentaires se
rajoutent la droite de la table, pour les tables de gauche--droite, et la gauche de la table, pour les
tables de droite--gauche.
Remarquer que l'lment TABLE est le seul sur qui l'attribut dir inverse l'ordre visuel des colonnes ; une
range de table (TR) ou un groupe de colonnes (COLGROUP) seuls ne peuvent pas tre inverss
indpendamment.
Quand il est spcifi pour l'lment TABLE, l'attribut dir affecte aussi la direction du texte l'intrieur
des cellules de la table (puisque l'attribut dir est hrit par les lments de type bloc).
Pour spcifier une table de droite--gauche, fixer la valeur de l'attribut dir comme suit :
<table dir="RTL">
...le reste de la table...
</table>
5.2.2 La lgende de la table : l'lment CAPTION
Quand l'lment CAPTION est prsent, son texte devrait dcrire la nature de la table. L'lment
CAPTION n'est autoris qu'immdiatement aprs la balise ouvrante de l'lment TABLE. L'lment
TABLE ne peut contenir qu'un seul lment CAPTION.
Les agents utilisateurs visuels permettent aux personnes voyantes d'embrasser rapidement la structure de
la table partir des en-ttes et de la lgende. Par consquent, les lgendes seront souvent inadaptes pour
le rsum de l'objet et de la structure de la table du point de vue des personnes qui dpendent d'agents
utilisateurs non-visuels.
Les auteurs devraient prendre soin de fournir des informations supplmentaires, qui rsument l'objet et la
structure de la table, en utilisant l'attribut summary de l'lment TABLE. Ceci est particulirement
important pour les tables dpourvues de lgende. Les exemples ci-dessous illustrent l'utilisation de
l'attribut summary.
Les agents utilisateurs visuels devraient viter le rognage de toute partie de la table qui contient la
lgende, moins de fournir un moyen pour accder toutes les parties de la table, par exemple par
dfilement horizontal ou vertical. Nous recommandons que le texte de la lgende soit coup la mme
largeur que celle de la table.
5.2.3 Les regroupements de ranges : les lments THEAD, TFOOT et TBODY
Les ranges de la table peuvent tre regroupes dans une section en-tte de la table, une section pied de la
table, et une ou plusieurs sections corps de table, en utilisant respectivement les lments THEAD,
TFOOT et TBODY. Cette organisation permet aux agents utilisateurs de grer le dfilement des corps de
la table, indpendamment de l'en-tte et du pied de la table. Pour l'impression d'une longue table, les
informations places dans l'en-tte et le pied de la table peuvent se rpter sur chacune des pages
contenant les donnes de la table.
L'en-tte et le pied de la table devraient contenir des informations sur les colonnes de la table. Le corps de
la table devrait contenir les ranges des donnes de la table.
Quand ils sont prsents, chaque lment THEAD, TFOOT et TBODY contient un groupe de ranges.
Chaque groupe de ranges doit contenir au moins une range, qui est dfinie par l'lment TR.
Cet exemple illustre l'ordre et la structure des en-ttes, pieds et corps des tables.
<table>
24
<thead>
<tr> ...informations d'en-tte...
</thead>
<tfoot>
<tr> ...informations de pied...
</tfoot>
<tbody>
<tr> ...premire range des donnes du bloc 1...
<tr> ...seconde range des donnes du bloc 1...
</tbody>
<tbody>
<tr> ...premire range des donnes du bloc 2...
<tr> ...deuxime range des donnes du bloc 2...
<tr> ...troisime range des donnes du bloc 2...
</tbody>
</table>
L'lment TFOOT doit survenir avant un lment TBODY dans une dfinition d'lment TABLE, de
sorte que les agents utilisateurs puissent restituer le pied avant de recevoir toutes les ranges de donnes
(ventuellement nombreuses). Le rsum suivant indique les balises qui sont obligatoires et celles qui
peuvent tre omises :
la balise ouvrante de l'lment TBODY est toujours requise, sauf quand la table n'est forme que
d'un seul corps et n'a aucune section d'en-tte ni de pied. La balise fermante de TBODY peut
toujours tre omise en toute scurit
les balises ouvrantes des lments THEAD et TFOOT sont requises quand les sections d'en-tte
et de pied sont respectivement prsentes, mais les balises fermantes qui leur correspondent
peuvent toujours tre omises en toute scurit.
Les moteurs d'analyse des agents utilisateurs doivent obir ces rgles pour des raisons de rtrocompatibilit.
La table de l'exemple prcdent pourrait tre lagues en supprimant certaines balises fermantes,
comme :
<table>
<thead>
<tr> ...informations d'en-tte...
<tfoot>
<tr> ...informations de pied...
<tbody>
<tr> ...premire range des donnes du bloc 1...
<tr> ...seconde range des donnes du bloc 2...
<tbody>
<tr> ...premire range des donnes du bloc 2...
<tr> ...deuxime range des donnes du bloc 2...
<tr> ...troisime range des donnes du bloc 2...
</table>
Les sections THEAD, TFOOT et TBODY doivent contenir le mme nombre de colonnes.
5.2.4 Les regroupements de colonnes : les lments COLGROUP et COL
Les groupes de colonnes permettent aux auteurs de crer des divisions structurelles l'intrieur d'une
table. Les auteurs peuvent mettre en vidence cette structure au travers des feuilles de styles ou des
attributs HTML (par exemple, l'attribut rules pour l'lment TABLE). Une table peut contenir soit un seul
groupe de colonnes implicite (aucun lment COLGROUP ne dlimite les colonnes), soit un certain
nombre de groupes de colonnes explicites (chacun tant dlimit par une instance de l'lment
COLGROUP).
L'lment COL permet aux auteurs de partager des attributs entre plusieurs colonnes, sans faire appel
un regroupement structurel. L' tendue de l'lment COL est reprsente par le nombre de colonnes
qui vont partager les attributs de l'lment.
25
L'lment COLGROUP
L'lment COLGROUP cre un groupe de colonne explicite. On peut spcifier le nombre de colonnes
dans le groupe de colonnes de deux faons, qui s'excluent mutuellement :
1.
2.
l'attribut span de l'lment (valeur par dfaut "1") spcifie le nombre de colonnes dans le
groupe ;
chaque lment COL dans l'lment COLGROUP reprsente une ou plusieurs colonnes dans le
groupe.
L'avantage de l'utilisation de l'attribut span, c'est que les auteurs peuvent regrouper les informations
concernant les largeurs de colonne. Ainsi, si une table contient quarante colonnes, chacune d'elles ayant
une largeur de 20 pixels, il est plus facile d'crire :
<COLGROUP span="40" width="20">
</COLGROUP>
plutt que :
<colgroup>
<col width="20">
<col width="20">
...jusqu' totaliser 40 lments COL...
</colgroup>
Quand il est ncessaire d'isoler une colonne (par exemple, pour une information de style, pour spcifier
une information de largeur, etc.) au sein d'un groupe, les auteurs doivent identifier cette colonne avec un
lment COL. Ainsi, pour appliquer une information de style particulire la dernire colonne de la table
prcdente, on l'isole de cette manire :
<colgroup width="20">
<col span="39">
<col id="mise-en-forme-particuliere">
</colgroup>
L'attribut width de l'lment COLGROUP est hrit par la totalit des 40 colonnes. Le premier lment
COL se rapporte aux 39 premires colonnes (sans rien de particulier pour elles) et le second assigne une
valeur l'attribut id pour la quarantime colonne, de sorte qu'une feuille de style puisse s'y appliquer.
La table dans l'exemple suivant contient deux groupes de colonnes. Le premier groupe de colonnes
contient 10 colonnes et le second 5 colonnes. La largeur par dfaut de chaque colonne du premier groupe
de colonnes est de 50 pixels. La largeur de chaque colonne dans le second groupe sera celle minimale qui
est requise pour cette colonne en question.
<table>
<colgroup span="10" width="50">
<colgroup span="5" width="0*">
<thead>
<tr><td> ...
</table>
L'lment COL
L'lment COL permet aux auteurs de rassembler les spcifications d'attributs pour les colonnes de la
table. L'lment COL ne rassemble pas les colonnes de manire structurelle (c'est le rle de l'lment
COLGROUP). Les lments COL sont vides et ne servent que de support pour les attributs. Ils peuvent
apparatre l'intrieur comme l'extrieur d'un groupe de colonnes explicite (i.e., l'lment
COLGROUP).
L'attribut width de l'lment COL se rapporte la largeur de chacune des colonnes dans la couverture de
l'lment.
5.2.5 Les ranges de la table : l'lment TR
L'lment TR se comporte comme un conteneur pour une range de cellules de la table. La balise
fermante peut tre omise.
Cet exemple de table montre trois ranges, chacune commenant par un lment TR :
<table summary="Cette table représente le nombre de tasses de café
26
27
Dans la dfinition de cette table, nous spcifions que la cellule en range 4 et colonne 2 devrait occuper
un total de trois colonnes, y compris la colonne courante.
<table border="1">
<caption>Les tasses de café consommées par chaque sénateur</caption>
<tr><th>Nom<th>Tasses<th>Type de café<th>Sucre ?
<tr><td>T. Sexton<td>10<td>Espresso<td>Non
<tr><td>J. Dinnen<td>5<td>Déca.<td>Oui
<tr><td>A. Soria<td colspan="3"><em>Non disponible</em>
</table>
Cette table pourrait tre restitue sur un tlimprimeur par un agent utilisateur visuel comme suit :
Les tasses de caf consommes par
chaque snateur
--------------------------------------| Nom |Tasses|Type de caf|Sucre ?|
--------------------------------------|T. Sexton| 10 |Espresso |Non |
--------------------------------------|J. Dinnen|5 |Dca.
|Oui |
--------------------------------------|A. Soria |Non disponible
|
--------------------------------------L'exemple suivant illustre ( l'aide de bordures de table) la manire dont les dfinitions des cellules qui
occupent plus d'une range, ou colonne, affectent la dfinition des cellules suivantes. Considrons la
dfinition de table suivante :
<table border="1">
<tr><td>1 <td rowspan="2">2 <td>3
<tr><td>4 <td>6
<tr><td>7 <td>8 <td>9
</table>
Comme la cellule "2" couvre la premire et la deuxime range, la dfinition de cette deuxime range va
la prendre en compte. Ainsi, le deuxime lment TD dans la deuxime range dfinit en ralit la
troisime cellule de la range.
Un agent utilisateur graphique restituerait cette table par :
Remarquez que, si l'lment TD dfinissant la cellule "6" avait t omis, une cellule supplmentaire vide
aurait t ajoute par l'agent utilisateur pour complter la range.
De la mme manire, dans la dfinition de table suivante :
<table border="1">
<tr><td>1 <td>2 <td>3
<tr><td colspan="2">4 <td>6
<tr><td>7 <td>8 <td>9
</table>
la cellule "4" couvre deux colonnes, de sorte que le deuxime lment TD dans la range dfinit en ralit
la troisime cellule ("6") :
Un agent utilisateur graphique restituerait cette table par :
La dfinition de cellules qui se chevauchent constitue une erreur. Les agents utilisateurs peuvent diverger
sur la faon de grer cette erreur (par exemple, la restitution peut varier).
EXEMPLE ILLGAL
28
L'exemple suivant montre comment on pourrait crer des cellules qui se chevauchent. Dans cette table, la
cellule "5" couvre deux ranges et la cellule "7" deux colonnes, de sorte qu'elles se chevauchent dans la
cellule entre "7" et "9":
<table border="1">
<tr><td>1 <td>2 <td>3
<tr><td>4 <td rowspan="2">5 <td>6
<tr><td colspan="2">7 <td>9
</table>
5.3 La mise en forme de la table par les agents utilisateurs visuels
5.3.1 Les bordures et les rgles
Les attributs suivants affectent le cadre externe et les rgles internes de la table.
Dfinition des attributs
frame = void|above|below|hsides|lhs|rhs|vsides|box|border
Cet attribut spcifie quels cts du cadre entourant la table seront visibles. Les valeurs possibles
sont :
rules = none|groups|rows|cols|all
Cet attribut spcifie quelles rgles vont apparatre entre les cellules l'intrieur de la table. La
restitution des rgles dpend de l'agent utilisateur. Les valeurs possibles sont :
29
<td>10</td>
<td>Espresso</td>
<td>Non</td>
<tr>
<td>J. Dinnen</td>
<td>5</td>
<td>Déca.</td>
<td>Oui</td>
</table>
Dans l'exemple suivant, l'agent utilisateur devrait afficher des bordures paisses de 5 pixels gauche et
droite de la table, avec des rgles dessines entre chaque colonne.
<table border="5" frame="vsides" rules="cols">
<tr> <td>1 <td>2 <td>3
<tr> <td>4 <td>5 <td>6
<tr> <td>7 <td>8 <td>9
</table>
5.3.2 L'alignement horizontal et vertical
La table dans cet exemple aligne des ranges de valeurs montaires sur un point dcimal. On dfinit
explicitement le caractre d'alignement comme tant , .
<table border="1">
<colgroup>
<col><col align="char" char=",">
<thead>
<tr><th>Légumes <th>Prix au kilo
<tbody>
<tr><td>Laitues
<td>€1
<tr><td>Carottes
<td>€10,50
<tr><td>Navets dorés <td>€100,30
</table>
5.3.3 Les marges des cellules
Dans l'exemple suivant, l'attribut cellspacing spcifie que les cellules devraient tre spares de vingt
pixels, les unes par rapport aux autres et par rapport au cadre de la table. L'attribut cellpadding spcifie
que la marge suprieure et la marge infrieure de la cellule seront chacune spares du contenu de la
cellule de 10% de l'espacement vertical disponible (totalisant 20%). De mme, la marge de gauche et la
marge de droite de la cellule seront chacune spares du contenu de la cellule de 10% de l'espacement
horizontal disponible (totalisant 20%).
<table cellspacing="20" cellpadding="20%">
<tr> <td>Donnes1 <td>Donnes2 <td>Donnes3
</table>
30
Si une table, ou une colonne donne, a une largeur fixe, les attributs cellspacing et cellpadding peuvent
demander plus d'espace que celui qui est assign. Les agents utilisateurs peuvent donner ces attributs la
priorit sur l'attribut de largeur width quand un conflit survient, mais ils ne sont pas obligs de le faire.
6 Les liens
Sommaire
1.
2.
3.
4.
31
Les ancres destinations dans les documents HTML peuvent tre spcifies soit par l'lment A (en le
nommant grce l'attribut name), soit par tout autre lment (en le nommant avec l'attribut id).
Ainsi, par exemple, un auteur pourrait crer une table des matires dont les entres sont relies aux
lments de titre H2, H3, etc., dans le mme document. En utilisant l'lment A pour crer les ancres
destinations, nous cririons :
<h1>Table des matières</h1>
<p><a href="#section1">Introduction</a><br>
<a href="#section2">Historique</a><br>
<a href="#section2.1">Sur un ton plus personnel</a><br>
...le reste de la table des matires...
...le corps du document...
<h2><a name="section1">Introduction</a></h2>
...section 1...
<h2><a name="section2">Historique</a></h2>
...section 2...
<h3><a name="section2.1">Sur un ton plus personnel</a></H3>
...section 2.1...
On peut obtenir le mme effet en transformant les lments de titre eux-mmes en ancres :
<h1>Table des matières</h1>
<p><a href="#section1">Introduction</a><br>
<a href="#section2">Historique</a><br>
<a href="#section2.1">Sur un ton plus personnel</a><br>
...le reste de la table des matires...
...le corps du document...
<h2 id="section1">Introduction</h2>
...section 1...
<h2 id="section2">Historique</h2>
...section 2...
<h3 id="section2.1">Sur un ton plus personnel</H3>
...section 2.1...
6.1.2 Les autres relations des liens
De loin, l'utilisation la plus commune du lien est de ramener une autre ressource Web, comme illustr
dans les exemples prcdents. Cependant, les auteurs peuvent insrer, dans leurs documents, des liens qui
expriment d'autres relations entre les ressources que le simple activer ce lien pour visiter telle
ressource . Les liens qui expriment d'autres types de relation ont un ou plusieurs types de lien spcifis
dans leur ancre source.
Les rles d'un lien dfini par l'lment A, ou LINK, sont spcifis au travers des attributs rel et rev.
Par exemple, les liens dfinis par l'lment LINK peuvent dcrire la position d'un document par rapport
une srie de documents. Dans l'extrait suivant, les liens dans le document intitul Chapitre 5 pointent
vers le chapitre qui prcde et celui qui suit :
<head>
...autres informations d'en-tte...
<title>Chapitre 5</title>
<link rel="prev" href="chapitre4.html">
<link rel="next" href="chapitre6.html">
</head>
Le type du premier lien est "prev" et celui du second est "next" (deux parmi plusieurs types de lien
reconnus). Les liens spcifis par l'lment LINK ne sont pas restitus avec le contenu du document,
mme si les agents utilisateurs peuvent les restituer autrement (par exemple, comme outils de navigation).
Mme s'ils ne sont pas utiliss pour la navigation, ces liens peuvent tre interprts de manire
intressante. Par exemple, un agent utilisateur, qui imprime une srie de documents HTML comme si
c'tait un seul document, peut utiliser ces informations de lien comme base pour la formation d'un
document linaire cohrent. On donne plus d'informatons ci-dessous sur l'utilisation des liens au bnfice
des moteurs de recherche.
32
33
3.
Les auteurs peuvent galement crer un lment A qui ne spcifie aucune ancre, i.e., qui ne spcifie
aucun attribut href, name ou id. Les valeurs de ces attributs peuvent tre fixes par la suite au moyen de
scripts.
Dans l'exemple suivant, l'lment A dfinit un lien. L'ancre source est reprsente par le texte site Web
du W3C et l'ancre destination par "http://www.w3.org/" :
Pour plus d'informations, veuillez consulter
le <a href="http://www.w3.org/">site Web du W3C</a>.
Ce lien dsigne la page d'accueil du World Wide Web Consortium. Quand un utilisateur active ce lien via
l'agent utilisateur, celui-ci va ramener la ressource, ici un document HTML.
Les agents utilisateurs restituent gnralement les liens de sorte les mettre en vidence pour les
utilisateurs (soulignage, vido inverse, etc.). La restitution exacte dpend de l'agent utilisateur. La
restitution peut varier si l'utilisateur a dj visit le lien ou non.
Pour indiquer explicitement aux agents utilisateurs l'encodage de caractres de la page de destination,
spcifiez l'attribut charset :
Pour plus d'information, veuillez consulter le
<a href="http://www.w3.org/" charset="ISO-8859-1">site Web du W3C</a>
Supposons que nous dfinissions une ancre nomme "ancre-1" dans le fichier "un.html".
...texte avant l'ancre...
<a name="ancre-1">Voici l'emplacement de l'ancre un.</a>
...texte aprs l'ancre...
Ceci cre une ancre autour du texte Voici l'emplacement de l'ancre un. . Habituellement, le contenu de
l'lment A n'est pas restitu de faon particulire quand l'lment A dfinit seulement une ancre.
Ayant dfini l'ancre, nous pouvons nous y rfrer partir du mme document ou d'un autre. Les URI qui
dsignent des ancres contiennent un caractre # suivi par le nom de l'ancre (l'identifiant de fragment).
Voici quelques exemples de tels URI :
Ainsi, un lien dfini dans le fichier "deux.html" dans le mme rpertoire que le fichier "un.html" se
rfrerait l'ancre comme suit :
...texte avant le lien...
Pour plus d'informations, veuillez consultez l'<a href="./un.html#ancre-1">ancre un</a>.
...texte aprs le lien...
Dans l'exemple suivant, l'lment A spcifie un lien (avec l'attribut href) et cre une ancre nomme (avec
l'attribut name) simultanment :
Je viens de rentrer de vacances ! Voici une
<a name="ancre-2"
href="http://www.unecompanie.com/Gens/Ian/vacances/famille.png">
photo de ma famille sur le lac.</a>.
Cet exemple contient un lien vers un autre type de ressource Web (une image PNG). L'activation du lien
entranerait le chargement de la ressource image partir du Web (et ventuellement son affichage si le
systme est configur dans ce sens).
6.2.1 La syntaxe des noms d'ancre
Le nom d'une ancre est la valeur soit de l'attribut name, soit de l'attribut id, quand on les utilise dans le
contexte des ancres. Les noms d'ancre doivent obir aux rgles suivantes :
Unicit : Les noms d'ancre doivent tre uniques dans le document. Les noms d'ancre qui ne
diffrent que par la casse ne devraient pas apparatre dans le mme document ;
Correspondance des chanes : Les comparaisons entre les identifiants de fragment et les noms
d'ancre doivent tre ralises selon une correspondance exacte (sensibilit la casse).
Ainsi, l'exemple suivant est juste pour ce qui est de la correspondance des chanes et doit donc tre
considr comme une correspondance par les agents utilisateurs :
34
<p><a href="#xxx">...</a>
...suite du document...
<p><a name="xxx">...</a>
EXEMPLE ILLGAL :
L'exemple suivant est illgal pour ce qui est de l'unicit, dans la mesure o les deux noms sont identiques
mis part la casse :
<p><a name="xxx">...</a>
<p><a name="XXX">...</a>
Bien que l'extrait suivant soit un code HTML lgal, le comportement de l'agent utilisateur n'est pas dfini
; certains agents utilisateurs peuvent considrer (par erreur) ceci comme tant une correspondance et
d'autres non.
<p><a href="#xxx">...</a>
...suite du document...
<p><a name="XXX">...</a>
Les noms d'ancre devraient se limiter aux caractres ASCII..
6.2.2 Les liens imbriqus sont illgaux
Les liens et les ancres dfinis par l'lment A ne doivent pas tre imbriqus ; un lment A ne doit pas
contenir d'autres lments A. Les lments LINK ne doivent pas tre imbriqus non plus.
6.2.3 Les ancres avec un attribut id
On peut utiliser l'attribut id pour crer une ancre dans la balise ouvrante de n'importe quel lment (y
compris l'lment A).
Cet exemple illustre une utilisation de l'attribut id pour positionner une ancre dans un lment H2.
L'ancre est relie via l'lment A.
Vous pouvez obtenir des précisions dans la <a href="#section2">Section deux</a>.
...plus loin dans le document
<h2 id="section2">Section deux</h2>
...plus loin dans le document
<p>Veuillez vous reporter à la <a href="#section2">Section deux</a>
ci-dessus pour plus de détails.
L'exemple suivant nomme une ancre destination avec l'attribut id :
Je suis de retour de vacances ! Voici une
<a id="ancre-deux">photo de ma famille sur le lac.</a>.
Les attributs id et name partagent le mme espace de noms. Cela signifie qu'ils ne peuvent pas tous deux
dfinir une ancre avec le mme nom dans le mme document. On admet l'utilisation des deux attributs
pour spcifier l'identifiant unique d'un lment pour les lments suivants : A, APPLET, FORM,
FRAME, IFRAME, IMG et MAP. Quand les deux attributs sont utiliss sur un seul lment, leurs valeurs
doivent tre identiques.
EXEMPLE ILLGAL :
L'extrait suivant est un code HTML illgal, puisque ces attributs dclare le nom deux fois dans le mme
document.
<a href="#a1">...</a>
...
<h1 id="a1">
...des pages et des pages...
<a name="a1"></a>
L'exemple suivant illustre le fait que les attributs id et name doivent tre les mmes quand tous les deux
apparaissent dans la balise ouvrante d'un lment :
<p><a name="a1" id="a1" href="#a1">...</a>
De par sa spcification dans le DTD de HTML, l'attribut name peut contenir des rfrences de caractres.
Ainsi, la valeur "Dürst" est valide pour l'attribut name, comme l'est la valeur "Dürst". La
valeur de l'attribut id, par contre, ne peut pas contenir de rfrences de caractres.
Utiliser id ou name ? Les auteurs devraient considrer les points suivants au moment de dcider lequel
attribut utiliser entre id et name pour le nom d'une ancre :
35
l'attribut id peut faire plus qu'un nom d'ancre (par exemple, slecteur de feuille de style,
identifiant de traitement, etc.) ;
certains agents utilisateurs anciens ne grent pas les ancres cres par l'attribut id ;
l'attribut name autorise des noms d'ancre plus varis (avec les entits).
si l'agent utilisateur ne peut pas localiser une ressource relie, il devrait le signaler l'utilisateur ;
si l'agent utilisateur ne peut pas identifier le type de la ressource relie, il devrait quand mme
essayer de la traiter. Il devrait avertir l'utilisateur et il peut lui permettre d'intervenir et identifier
le type du document.
36
des liens vers les versions alternatives d'un document, crites dans une autre langue ;
des liens vers les versions alternatives d'un document, conues pour des mdias diffrents, par
exemple une version convenant particulirement pour l'impression ;
des liens vers la page de garde d'une collection de documents.
Les exemples ci-dessous illustrent les faons de combiner les indications de langue, les types de mdia et
les types de lien pour amliorer la prise en charge des documents par les moteurs de recherche.
Dans l'exemple suivant, nous utilisons l'attribut hreflang pour indiquer aux moteurs de recherche o
trouver les versions hollandaise, portugaise et arabe d'un document. Remarquez l'utilisation de l'attribut
charset pour le manuel arabe. Remarquez aussi l'utilisation de l'attribut lang pour indiquer que la valeur
de l'attribut title de l'lment LINK, qui dsigne le manuel franais, est en franais.
<head>
<title>Le manuel en anglais</title>
<link title="Le manuel en hollandais"
type="text/html"
rel="alternate"
hreflang="nl"
href="http://quelquepart.com/manuel/hollandais.html">
<link title="Le manuel en portugais"
type="text/html"
rel="alternate"
hreflang="pt"
href="http://quelquepart.com/manuel/portugais.html">
<link title="Le manuel en arabe"
type="text/html"
rel="alternate"
charset="ISO-8859-6"
hreflang="ar"
href="http://quelquepart.com/manuel/arabe.html">
<link lang="fr" title="Le manuel en français"
type="text/html"
rel="alternate"
hreflang="fr"
href="http://quelquepart.com/manuel/francais.html">
</head>
Dans l'exemple suivant, nous indiquons aux moteurs de recherche o trouver la version imprime d'un
manuel.
<head>
<title>Manuel de référence</title>
<link media="print" title="Le manuel en Postscript"
type="application/postscript"
rel="alternate"
href="http://quelquepart.com/manuel/postscript.ps">
</head>
Dans l'exemple suivant, nous indiquons aux moteurs de recherche o trouver la page de garde d'une
collection de documents.
<head>
<title>Manuel de référence -- Page 5</title>
<link rel="Start" title="La première page du manuel"
type="text/html"
href="http://quelquepart.com/manuel/debut.html">
</head>
37
De surcrot, les lments OBJECT et APPLET dfinissent des attributs qui ont priorit sur la valeur fixe
par l'lment BASE.
38
4.
5.
6.
7.
ils ne rpondent pas au problme plus gnral de la manire d'inclure les nouveaux comme les
futurs types de mdia ;
l'lment APPLET ne fonctionne qu'avec des applets bass sur le langage Java. Cet lment est
dconseill en faveur de l'lment OBJECT ;
ils entranent des problmes d'accessibilit.
Pour rpondre ces questions, HTML 4 introduit l'lment OBJECT, qui offre une solution gnrale aux
inclusions d'objets gnriques. L'lment OBJECT permet aux auteurs HTML de spcifier tout ce que
l'objet requiert pour sa prsentation par un agent utilisateur : le code source, les valeurs initiales et les
donnes d'excution. Dans cette spcification, on emploie le terme objet pour dsigner les choses que
les personnes mettent dans les documents HTML ; les termes usuels courants pour ces choses sont : les
applets, les modules d'extension [ndt. plug-ins], les gestionnaires de mdia [ndt. media handlers], etc.
Le nouvel lment OBJECT prend donc en charge quelques unes des tches effectues par les lments
existants. Considrons le comparatif des fonctionnalits suivant :
Type d'inclusion
lment spcifique
lment gnrique
Image
IMG
OBJECT
Applet
OBJECT
Le comparatif indique que chaque type d'inclusion possde une solution spcifique et une solution
gnrique. L'lment gnrique OBJECT servira de solution pour l'implmentation des types de mdia
futurs.
Pour inclure des images, les auteurs peuvent utiliser l'lment OBJECT ou bien l'lment IMG.
39
Pour inclure des applets, les auteurs devraient utiliser l'lment OBJECT puisque l'lment APPLET est
dconseill.
Pour inclure un document HTML dans un autre, les auteurs peuvent utiliser soit le nouvel lment
IFRAME, soit l'lment OBJECT. Dans les deux cas, le document incorpor reste indpendant du
document principal. Les agents utilisateurs visuels peuvent prsenter le document incorpor dans une
fentre distincte l'intrieur du document principal. Veuillez consulter les remarques sur les documents
incorpors pour une comparaison entre les lments OBJECT et IFRAME pour l'inclusion d'un
document.
Les images et les autres objets inclus peuvent avoir des hyperliens qui leur sont associs, la fois au
travers des mcanismes de liaison standards mais aussi via des images cliquables [ndt. image maps]. Une
image cliquable spcifie les rgions gomtriques actives d'un objet inclus et assigne un lien chacune
d'elles. Quand ils sont activs, ces liens peuvent entraner la recherche d'un document, lancer un
programme sur le serveur, etc.
Dans les sections suivantes, nous abordons les divers mcanismes dont disposent les auteurs pour les
inclusions multimdias et pour la cration d'images cliquables pour ces inclusions.
7.2 L'inclusion d'une image : l'lment IMG
L'lment IMG incorpore une image dans le document courant, l'emplacement de la dfinition de
l'lment. L'lment IMG n'a pas de contenu ; il est gnralement remplac dans la ligne par l'image que
dsigne l'attribut src, les images alignes gauche ou droite qui flottent hors de la ligne faisant
exception.
Dans un exemple prcdent, nous dfinissions un lien vers une photo familiale. Ici, nous insrons la
photo directement dans le document courant :
<body>
<p>Je viens de revenir de vacances !
Voici une photo de la famille sur le lac :
<img src="http://www.unecompagnie.com/Gens/Ian/vacances/famille.png"
alt="Une photo de ma famille sur le lac.">
</body>
On pourrait galement obtenir cette inclusion avec l'lment OBJECT, comme suit :
<body>
<p>Je viens de revenir de vacances !
Voici une photo de la famille sur le lac :
<object data="http://www.unecompagnie.com/Gens/Ian/vacances/famille.png"
type="image/png">
Une photo de ma famille sur le lac.
</object>
</body>
L'attribut alt spcifie le texte de remplacement qui sera restitu si l'image ne peut s'afficher (voir cidessous pour des prcisions sur la manire de spcifier un texte de remplacement). Les agents utilisateurs
doivent restituer le texte de remplacement quand ceux-ci ne grent pas les images, ne reconnaissent pas
un certain type d'image ou ne sont pas configurs pour afficher les images.
L'exemple suivant montre comment employer l'attribut longdesc pour relier l'image une description
approfondie :
<body>
<p>
<img src="image-cliquable.gif"
alt="Plan du site du laboratoire"
longdesc="plandusite.html">
</body>
L'attribut alt fournit une description brve de l'image. Celle-ci devrait tre suffisante pour permettre
l'utilisateur de dcider s'il va suivre le lien donn par l'attribut longdesc vers la description plus dtaille,
ici "plandusite.html".
Veuillez consulter la section sur la prsentation visuelle des objets, images et applets pour des prcisions
sur la taille, l'alignement et les bordures de l'image.
40
L'implmentation de l'objet inclus. Par exemple, si l'objet inclus est un applet d'horloge, l'auteur
doit indiquer la localisation du code excutable de l'applet ;
Les donnes restituer. Par exemple, si l'objet inclus est un programme pour restituer des
donnes de polices, l'auteur doit indiquer la localisation de ces donnes ;
Les valeurs supplmentaires requises par l'objet l'excution. Par exemple, certains applets
peuvent demander des valeurs initiales en paramtres.
L'lment OBJECT permet aux auteurs de spcifier tous ces trois types de donnes, mais il n'est pas
ncessaire de toutes les spcifier en une seule fois. Par exemple, certains objets peuvent ne pas requrir
de donnes (par exemple, un applet autonome qui effectue une petite animation). D'autres peuvent exiger
une initialisation l'excution. D'autres encore ne pas avoir besoin d'informations supplmentaires sur
l'implantation, i.e., l'agent utilisateur peut dj savoir de lui-mme comment restituer ce type de donnes
(par exemple, des images GIF).
Les auteurs spcifient l'implantation d'un objet et la localisation des donnes restituer via l'lment
OBJECT. Par contre, pour spcifier des valeurs d'excution, les auteurs utilisent l'lment PARAM, qui
est abord dans la section sur l'initialisation de l'objet.
L'lment OBJECT peut aussi apparatre en contenu de l'ment HEAD. tant donn que les agents
utilisateurs ne restituent gnralement pas les lments placs dans la section HEAD, les auteurs
devraient s'assurer qu'aucun lment OBJECT dans la section HEAD ne spcifie un contenu qui peut tre
restitu. Veuillez consulter la section sur le partage des donnes entre les cadres pour un exemple
d'inclusion de l'lment OBJECT dans l'lment HEAD.
7.3.1 Les rgles de restitution des objets
L'agent utilisateur doit interprter l'lment OBJECT selon les rgles de prsance suivantes :
1.
2.
L'agent utilisateur doit en premier essayer de restituer l'objet. Il ne devrait pas restituer le
contenu de l'lment, mais il doit l'examiner au cas o l'lment contiendrait d'ventuels enfants
directs qui soient des lments PARAM (voir la section sur l'initialisation de l'objet) ou bien des
lments MAP (voir la section sur les images cliquables ct client) ;
Si l'agent utilisateur est incapable de restituer l'objet, pour une raison ou pour une autre (non
configur pour, absence des ressources, architecture errone, etc.), il doit essayer de restituer son
contenu.
Dans l'exemple suivant, nous insrons un applet d'horloge analogique dans un document via l'lment
OBJECT. L'applet, crit dans le langage Python, ne requiert aucune donnes supplmentaires ni valeurs
d'excution. L'attribut classid spcifie la localisation de l'applet :
<p><object classid="http://www.miamachina.it/orologioanalogico.py">
</object>
Remarquez que l'horloge sera restitue ds l'interprtation de la dclaration de l'lment OBJECT par
l'agent utilisateur. Il est possible de diffrer la restitution d'un objet en effectuant une dclaration
pralable de cet objet (dcrit ci-dessous).
Les auteurs devraient remplir cette dclaration en y incluant un texte de remplacement comme contenu de
l'lment OBJECT, pour le cas o l'agent utilisateur ne pourrait pas restituer l'horloge.
<p><object classid="http://www.miamachina.it/orologioanalogico.py">
Une horloge anime.
</object>
Une consquence significative de la conception de l'lment OBJECT, c'est qu'elle offre un mcanisme
pour spcifier des restitutions alternatives de l'objet chacune des dclarations des lments OBJECT
41
imbriqus peut spcifier un type de contenu alternatif. Si l'agent utilisateur ne peut pas restituer l'lment
OBJECT le plus externe, il essaye d'en restituer le contenu, qui peut tre un autre lment OBJECT, etc.
Dans l'exemple suivant, nous imbriquons plusieurs dclarations d'lments OBJECT pour illustrer le
fonctionnement des restitutions alternatives. L'agent utilisateur essaye d'abord de restituer le premier
lment OBJECT qu'il peut, dans l'ordre suivant : (1) un applet reprsentant un globe terrestre interactif,
crit dans le langage Python, (2) une animation MPEG du globe, (3) une image GIF du globe et (4) un
texte de remplacement.
<p>
<!-- Essayer d'abord l'applet en Python -->
<object title="La terre vue de l'espace"
classid="http://www.observer.mars/LaTerre.py">
<!-- Sinon, essayer la vido MPEG -->
<object data="LaTerre.mpeg" type="application/mpeg">
<!-- Sinon, essayer l'image GIF -->
<object data="LaTerre.gif" type="image/gif">
<!-- Sinon, le texte en dernier recours -->
La <strong>Terre</strong> vue de l'espace.
</object>
</object>
</object>
La dclaration la plus externe spcifie un applet qui ne requiert ni donne ni valeurs initiales. La
deuxime dclaration spcifie une animation MPEG et, puisqu'elle ne dfinit pas la localisation d'une
l'implmentation pour traiter l'animation MPEG, compte sur l'agent utilisateur pour prendre en charge
celle-ci. Nous avons galement spcifi l'attribut type, de sorte que l'agent utilisateur, qui sait ne pas
pouvoir restituer un MPEG, n'essaiera mme pas de charger le fichier "LaTerre.mpeg" partir du rseau.
La troisime dclaration spcifie la localisation d'un fichier GIF et fournit un texte de remplacement au
cas o tous les autres mcanismes auraient chou.
Les donnes internes compares aux donnes externes. Les donnes restituer peuvent tre fournies de
deux faons : en interne ou partir d'une ressource externe. Tandis que la premire mthode donnera en
gnral une restitution plus rapide, elle ne conviendra pas quand il s'agira de restituer une grande
quantit de donnes.
Voici un exemple qui illustre la manire dont les donnes internes peuvent tre injectes dans l'lment
OBJECT :
<p>
<object id="horloge1"
classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
data="data:application/x-oleobject;base64, ...des donnes en base64...">
Une horloge.
</object>
Veuillez consulter la section sur la prsentation visuelle des objets, images et applets pour des prcisions
sur la taille, l'alignement et les bordures d'un objet.
7.3.2 L'initialisation de l'objet : l'lment PARAM
Les lments PARAM spcifient l'ensemble des valeurs qui peuvent tre requises l'excution par un
objet. Il peut y avoir un nombre quelconque d'lments PARAM dans le contenu d'un lment OBJECT,
ou APPLET, dans n'importe quel ordre, mais ceux-ci doivent se placer au dbut du contenu de l'lment
englobant OBJECT, ou APPLET.
La syntaxe des noms et de leurs valeurs est cense comprise par l'implmentation de l'objet. Ce document
ne spcifie pas les faons selon lesquelles les agents utilisateurs devraient ramener les couples
nom/valeur ni devraient interprter les noms apparaissant en double.
Nous revenons l'exemple avec l'horloge pour illustrer l'utilisation de l'lment PARAM : supposons que
l'applet admette deux paramtres d'excution qui dfinissent sa hauteur et sa largeur initiales. On peut
fixer une dimension initiale de 40x40 pixels l'aide de deux lments PARAM.
<p><object classid="http://www.miamachina.it/orologianalogico.py">
<param name="height" value="40" valuetype="data">
<param name="width" value="40" valuetype="data">
L'agent utilisateur ne reconnat pas les applications Python.
</object>
42
Dans l'exemple suivant, les donnes d'excution pour le paramtre Valeurs_initiales de l'objet sont
spcifies comme tant une ressource externe (un fichier GIF). La valeur de l'attribut valuetype est donc
fixe "ref" et la valeur de l'attribut value est l'URI qui dsigne la ressource.
<p><object classid="http://www.cadeau.com/gifappli"
standby="Chargement en cours...">
<param name="Valeurs_initiales"
value="./images/elvis.gif">
valuetype="ref">
</object>
Remarquez que nous avons galement spcifi l'attribut standby pour que l'agent utilisateur puisse
afficher un message pendant le chargement du mcanisme de restitution.
Quand un lment OBJECT est restitu, l'agent utilisateur doit rechercher les seuls contenus des lments
PARAM qui sont des enfants directs et les injecter dans l'objet OBJECT.
Ainsi, dans l'exemple suivant, si l'objet identifi par "obj1" est restitu, alors le paramtre "param1"
s'applique "obj1" (et non "obj2"). Si l'objet "obj1" n'est pas restitu et par contre l'objet "obj2" l'est,
alors le paramtre "param1" est ignor et "param2" s'applique "obj2". Si ni l'un ni l'autre lment
OBJECT n'est restitu, alors ni l'un ni l'autre lment PARAM ne s'applique.
<p>
<object id="obj1">
<param name="param1">
<object id="obj2">
<param name="param2">
</object>
</object>
7.3.3 Les systmes de nommage globaux des objets
La localisation de l'implmentation d'un objet est donne par un URI. Comme nous l'avons vu dans
l'introduction aux URI, le premier segment d'un URI absolu spcifie le systme de nommage [ndt.
naming scheme] utilis pour transfrer les donnes dsignes par l'URI. Pour les documents HTML, ce
systme est frquemment http . Certains applets pourraient employer d'autres systmes de nommage.
Par exemple, lors de la spcification d'un applet Java, les auteurs peuvent utiliser des URI qui
commencent par java et pour les applets ActiveX par clsid .
Dans l'exemple suivant, on insre un applet Java dans un document HTML.
<p><object classid="java:program.start">
</object>
Par la spcification de l'attribut codetype, l'agent utilisateur peut dcider s'il ramne l'application Java en
s'appuyant sur sa capacit le faire.
<object codetype="application/java-archive"
classid="java:program.start">
</object>
Certains systmes de restitution demandent des informations supplmentaires pour identifier leur
implmentation et on doit leur dire o trouver ces informations. Les auteurs peuvent donner une
indication de chemin l'implmentation de l'objet via l'attribut codebase.
<object codetype="application/java-archive"
classid="java:program.start">
codebase="http://foooo.bar.com/java/monimplementation/"
</object>
L'exemple suivant spcifie (avec l'attribut classid) un objet ActiveX via un URI qui commence par le
systme de nommage clsid . L'attribut data localise les donnes restituer (une autre horloge).
<p><object classid="clsid:663C8FEF-1EF9-11CF-A3DB-080036F12502"
data="http://www.acme.com/ole/horloge.stm">
Cette application n'est pas reconnue.
</object>
7.4 L'inclusion d'un applet : l'lment APPLET
Cet lment, qui est gr par tous les navigateurs compatibles avec Java, permet aux dveloppeurs
d'incorporer un applet Java dans un document HTML. Il est dconseill en faveur de l'lment OBJECT.
43
Le contenu de l'lment APPLET fais office de support d'informations de remplacement pour les agents
utilisateurs qui ne reconnaissent pas cet lment ou qui ne sont pas configurs cet instant pour grer les
applets. Sinon, les agents utilisateurs doivent ignorer le contenu.
EXEMPLE DCONSEILL :
Dans l'exemple suivant, l'lment APPLET inclut un applet Java au document. Comme aucun attribut
codebase n'est donn, l'applet est cens se trouver dans le mme rpertoire que le document courant.
<applet code="Bulles.class" width="500" height="500">
Un applet Java qui dessine des bulles animées.
</applet>
Cet exemple peut se rcrire avec un lment OBJECT, comme suit :
<p><object codetype="application/java"
classid="java:Bulles.class"
width="500" height="500">
Un applet Java qui dessine des bulles animées.
</object>
Les valeurs initiales peuvent tre fournies l'applet via l'lment PARAM.
EXEMPLE DCONSEILL :
L'exemple d'applet Java suivant :
<applet code="AudioItem" width="15" height="15">
<param name="son" value="Bonjour.au|Bienvenue.au">
Un applet Java qui joue un son de bienvenue.
</applet>
celui-ci peut se rcrire avec l'lment OBJECT, commes suit :
<object codetype="application/java"
classid="AudioItem"
width="15" height="15">
<param name="son" value="Bonjour.au|Bienvenue.au">
Un applet Java qui joue un son de bienvenue.
</object>
7.5 Les images cliquables
Les images cliquables permettent aux auteurs de spcifier des rgions dans une image, ou un objet, et
d'assigner une action particulire chacune de ces rgions (par exemple, ramener un document, lancer un
programme, etc.). Quand l'utilisateur active la rgion, l'action est excute.
Une image cliquable est cre en associant un objet une spcification de zones gomtriques sensibles
sur celui-ci.
Il existe deux types d'images cliquables :
Ct client. Quand l'utilisateur active une rgion d'une image cliquable ct client avec une
souris, l'agent utilisateur en interprte les coordonnes du pixel. L'agent utilisateur slectionne le
lien spcifi pour la rgion active et le suit ;
Ct serveur. Quand l'utilisateur active une rgion d'une image cliquable ct serveur, les
coordonnes du pixel du clic sont envoyes l'agent ct serveur, qui est spcifi par l'attribut
href de l'lment A. L'agent ct serveur interprte ces coordonnes et effectue une certaine
action.
Les images cliquables ct client sont prfres celles ct serveur pour au moins deux raisons : elles
sont accessibles aux personnes navigant avec des agents utilisateurs non-graphiques et elles renvoient une
rponse immdiate pour ce qui est de savoir si le pointeur se trouve sur une rgion active ou non.
7.5.1 Les images cliquables ct client : les lments MAP et AREA
L'lment MAP spcifie une image cliquable ct client (ou un autre mcanisme de navigation) qui peut
tre associe d'autres lments (IMG, OBJECT ou INPUT). L'image cliquable est associe un lment
via l'attribut usemap de celui-ci. L'lment MAP peut s'employer sans image associe pour des
mcanismes de navigation gnraux.
La prsence de l'attribut usemap sur un lment OBJECT implique que l'objet qui est inclus est une
image. En outre, quand l'lment OBJECT a une image cliquable ct client associe, l'agent utilisateur
44
peut produire une interaction utilisateur avec cet lment OBJECT, uniquement en fonction de l'image
cliquable ct client. Ceci permet aux agents utilisateurs (tels un navigateur vocal ou un robot) d'interagir
avec l'lment OBJECT sans devoir le traiter ; l'agent utilisateur peut mme choisir de ne pas ramener (ou
traiter) l'objet. Quand un lment OBJECT a une image cliquable associe, l'auteur ne devrait pas
compter sur le fait que l'objet sera ramen ou trait par tous les agents utilisateurs.
Le modle de contenu de l'lment MAP permet l'auteur les combinaisons suivantes :
1.
2.
Un ou plusieurs lments AREA. Ces lments n'ont aucun contenu mais spcifient les rgions
gomtriques de l'image cliquable et les liens qui sont associs chaque rgion. Remarquez que
les agents utilisateurs ne restituent pas en gnral les lment AREA. C'est pourquoi les auteurs
doivent fournir un texte de remplacement pour chaque lment AREA avec l'attribut alt (voir cidessous pour des renseignements sur la manire de spcifier un texte de remplacement) ;
Un contenu de type bloc. Ce contenu devrait comprendre les lments A qui spcifient les
rgions gomtriques de l'image cliquable et le lien associ chaque rgion. Remarquez que
l'agent utilisateur devraient restituer le contenu de type bloc d'un lment MAP. Les auteurs
devraient utiliser cette mthode pour crer des documents plus accessibles.
Quand un lment MAP contient un contenu mixte ( la fois des lments AREA et un contenu de type
bloc), les agents utilisateurs doivent ignorer les lments AREA.
Les auteurs devraient spcifier la gomtrie d'une image cliquable entirement avec des lments AREA,
ou entirement avec des lments A, ou entirement avec les deux si le contenu est mixte. Les auteurs
peuvent souhaiter mler le contenu, de sorte que les agents utilisateurs anciens prendront en charge les
cartographies spcifies par les lments AREA et les agents utilisateurs rcents tireront profit des
contenus en bloc plus toffs.
Si deux rgions dfinies ou plus se chevauchent, l'lment dfinissant une rgion qui apparat en premier
dans le document a priorit (i.e., rpond aux sollicitations de l'utilisateur).
Les agents utilisateurs et les auteurs devraient offrir des alternatives textuelles aux images cliquables
quand les graphiques ne sont pas disponibles ou les utilisateurs ne peuvent y accder. Par exemple, les
agents utilisateurs peuvent utiliser le texte de l'attribut alt pour crer des liens textuels la place des
images cliquables graphiques. De tels liens peuvent tre activs de diverses faons (clavier, commande
vocale, etc.).
Exemples d'images cliquables ct client
Dans l'exemple suivant, nous crons une image cliquable ct client pour l'lment OBJECT. Nous ne
voulons pas restituer le contenu d'image cliquable quand l'lment OBJECT est restitu, c'est pourquoi
nous dissimulons l'lment MAP dans le contenu de l'lment OBJECT. En consquence, le contenu
de l'lment MAP ne sera restitu qui si l'lment OBJECT ne peut pas l'tre.
<html>
<head>
<title>Le site sympa !</title>
</head>
<body>
<p><object data="barrenavigation1.gif" type="image/gif" usemap="#carte1">
<map name="carte1">
<p>Naviguer dans le site :
<a href="guide.html" shape="rect" coords="0,0,118,28">Plan d'accès</a> |
<a href="raccourci.html" shape="rect" coords="118,0,184,28">Entrée</a> |
<a href="recherche.html" shape="circle" coords="184,200,60">Recherche</a> |
<a href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">
Les dix premiers du hit-parade</a>
</map>
</object>
</body>
</html>
On peut vouloir que l'image cliquable soit restitue mme si l'agent utilisateur est incapable de restituer
l'lment OBJECT. Par exemple, on peut vouloir associer une image cliquable un lment OBJECT et
inclure une barre de navigation textuelle en bas de la page. Pour cela, nous dfinissons l'lment MAP en
dehors de l'lment OBJECT :
<html>
45
<head>
<title>Le site sympa !</title>
</head>
<body>
<p><object data="barrenavigation1.gif" type="image/gif" usemap="#carte1">
</object>
...le reste de la page ici...
<map name="carte1">
<p>Naviguer dans le site :
<a href="guide.html" shape="rect" coords="0,0,118,28">Plan d'accès</a> |
<a href="raccourci.html" shape="rect" coords="118,0,184,28">Entrée</a> |
<a href="recherche.html" shape="circle" coords="184,200,60">Recherche</a> |
<a href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">
Les dix premiers du hit-parade</a>
</map>
</body>
</html>
Dans l'exemple suivant, nous crons une image cliquable similaire, cette fois en employant l'lment
AREA. Remarquez l'utilisation du texte de l'attribut alt :
<p><object data="barrenavigation1.gif" type="image/gif" usemap="#carte1">
<p>Voici une barre de navigation.
</object>
<map name="carte1">
<area href="guide.html"
alt="Plan d'accès"
shape="rect"
coords="0,0,118,28">
<area href="recherche.html"
alt="Recherche"
shape="rect"
coords="184,0,276,28">
<area href="raccourci.html"
alt="Entrée"
shape="circle"
coords="184,200,60">
<area href="top10.html"
alt="Les dix premiers du hit-parade"
shape="poly"
coords="276,0,276,28,100,200,50,50,276,0">
</map>
Voici une variante utilisant l'lment IMG au lieu de OBJECT (avec la mme dclaration MAP) :
<p><img src="barrenavigation1.gif" usemap="#carte1" alt="Barre de navigation">
L'exemple suivant illustre la manire dont on peut partager des images cliquables.
Les lments OBJECT imbriqus sont utiles pour offrir des solutions de repli au cas o l'agent utilisateur
ne reconnatrait pas certains formats. Par exemple :
<p>
<object data="barrenavigation.png" type="image/png">
<object data="barrenavigation.gif" type="image/gif">
texte dcrivant l'image...
</object>
</object>
Si l'agent utilisateur ne reconnat pas le format PNG, celui-ci essaye de restituer l'image GIF. Si celui-ci
ne reconnat pas le format GIF (par exemple, parce qu'il s'agit d'un navigateur vocal), il se rabat par
dfaut sur la description textuelle fournie en contenu de l'lment OBJECT interne. Quand les lments
OBJECT sont imbriqus de cette manire, les auteurs peuvent partager des images cliquables entre eux :
<p>
<object data="barrenavigation.png" type="image/png" usemap="#carte1">
46
47
Les attributs height et width donnent l'agent utilisateur une indication sur les dimensions d'une image ou
d'un objet, de sorte qu'il puisse rserver leur place et continuer restituer le document en attendant les
donnes d'image.
7.7 La manire de spcifier un texte de remplacement
Plusieurs lments non-textuels (IMG, AREA, APPLET et INPUT) laissent l'auteur spcifier un texte de
remplacement qui sert de contenu quand l'lment ne peut pas tre restitu normalement. La spcification
d'un texte de remplacement reprsente une aide pour les utilisateurs ne disposant pas de terminaux
d'affichage graphiques, pour les utilisateurs dont les navigateurs ne reconnaissent pas les formulaires,
pour les utilisateurs avec des dficiences visuelles, pour ceux qui utilisent des synthtiseurs de parole,
ceux qui ont dsactiv l'affichage des images de leurs agents utilisateurs graphiques, etc.
On doit spcifier l'attribut alt sur les lments IMG et AREA. Il est optionnel pour les lments INPUT et
APPLET.
Alors qu'un texte de remplacement peut tre trs utile, on doit l'employer bon escient. Les auteurs
devraient observer les principes directeurs suivants :
Ne pas spcifier un texte de remplacement non pertinent lors de l'inclusion d'images destines
la mise en forme d'une page par exemple, la dfinition alt="Puce rouge" serait inadquate pour
une image qui ajoute une puce rouge pour dcorer un titre ou un paragraphe. Auquel cas, le texte
de remplacement devrait tre la chane vide (""). De manire gnrale, on conseille aux auteurs
d'viter l'insertion d'images (invisibles car se confondant avec le fond de la page) pour la mise en
forme des pages ; les feuilles de style sont prvues cet effet ;
Ne pas spcifier un texte de remplacement dpourvu de signification (par exemple, "texte
fictif"). Cela va non seulement frustrer l'utilisateur, mais aussi ralentir les agents utilisateurs qui
doivent convertir le texte en parole ou en sortie Braille.
3.
4.
5.
48
Ces techniques accroissent considrablement la complexit des pages Web, offrent peu de souplesse,
souffrent de problmes d'interoprabilit et sont une preuve pour les personnes avec des handicaps.
Les feuilles de style rsolvent tous ces problmes en mme temps qu'elles remplacent l'ventail limit des
mcanismes de prsentation dans HTML. Avec les feuilles de style, il devient facile de spcifier
l'espacement entre les lignes de texte, l'indentation des lignes de texte, la couleur utilise pour le texte et
l'arrire-plan, la taille et le style de la police et quantit d'autres dtails.
Par exemple, la courte feuille de style CSS ( Cascading Style Sheet ) suivante (stocke dans le fichier
"special.css") dfinit la couleur du texte d'un paragraphe en vert et l'entoure avec une bordure pleine
rouge :
P.special {
color : green;
border: solid red;
}
L'auteur peut relier cette feuille de style son document HTML source avec l'lment LINK :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<link rel="stylesheet" type="text/css" href="stylevert.css">
</head>
<body>
<p class="special">Le texte de ce paragraphe devrait être vert.
</body>
</html>
HTML 4 apporte la gestion des fonctionnalits de feuille de style suivantes :
La souplesse de la mise en place des informations de style
Le placement des feuilles de style dans des fichiers spars afin de faciliter leur rutilisation. Il
est parfois utile d'inclure des instructions de restitution dans le document auquel elles
s'appliquent, soit regroupes au dbut du document, soit dans les attributs des lments tout au
long du corps du document. Afin de faciliter la gestion du style pour un site entier, cette
spcification dcrit comment utiliser les en-ttes HTTP pour que les feuilles de style s'appliquent
un document.
L'indpendance vis--vis des langages de feuille de style
Cette spcification n'attache pas HTML un langage de style particulier. Cela permet
l'utilisation d'un panel de langages, par exemple les plus simples pour la majorit des utilisateurs
et les plus complexes pour une minorit d'utilisateurs aux besoins trs spcialiss. Les exemples
inclus ci-dessous utilisent tous le langage CSS , mais d'autres langages de feuille de style
seraient possibles.
La cascade
C'est la facult de certains langages de feuilles de style, tel que CSS, d'assembler les
informations de style provenant de plusieurs sources. Celles-ci pourraient tre, par exemple, la
charte de style d'une entreprise, les styles communs un groupe de documents et les styles
propres un seul document. En les stockant sparment, les feuilles de style peuvent tre
rutilises, ce qui simplifie l'dition et utilise plus efficacement les caches du rseau. La cascade
dfinit une squence ordonne de feuilles de style dans laquelle les dernires feuilles de style ont
une priorit plus leve que les premires. Certains langages de feuille de style ne grent pas la
cascade.
Les dpendances aux mdias
HTML permet aux auteurs de spcifier les documents indpendamment du mdia. Cela permet
aux utilisateurs l'accs aux pages Web au moyen d'une grande varit d'appareils et de mdias,
par exemple, les crans graphiques des ordinateurs tournant sous Windows, Macintosh OS ou
X11, les appareils de tlvision, les tlphones portables spciaux et les agendas lectroniques,
les navigateurs synthse vocale et les appareils tactiles Braille.
Les feuilles de style, par contraste, s'applique un mdia spcifique ou un groupe de mdias.
Une feuille de style prvue pour un cran peut tre ventuellement utilisable pour l'impression,
mais sera de peu d'utilit pour un navigateur synthse vocale. Cette spcification permet de
49
dfinir les catgories gnrales de mdias pour lesquels une feuille de style donne peut
s'appliquer. Ceci permet aux agents utilisateurs d'viter la recherche de feuilles de style
innapropries. Les langages de feuilles de style peuvent inclure des mcanismes dcrivant les
dpendances aux mdias dans la mme feuille de style.
Les styles alternatifs
Les auteurs peuvent vouloir offrir aux lecteurs plusieurs prsentations d'un document. Par
exemple, une feuille de style pour la restitution des documents compacts dans une petite taille de
police, ou une autre qui spcifie une taille de police plus grande pour une meilleure lisibilit.
Cette spcification permet aux auteurs de spcifier une feuille de style prfre tout comme les
feuilles alternatives qui visent des utilisateurs ou des mdias spcifiques. Les agents utilisateurs
devraient donner aux utilisateurs la possibilit de choisir entre plusieurs feuilles de styles
alternatives comme de dsactiver les feuilles de style.
Le souci de l'efficacit
Certaines personnes ont exprims des inquitudes sur l'efficacit des feuilles de style. Par
exemple, la recherche d'une feuille de style externe peut retarder la prsentation complte
l'utilisateur. Une question similaire surgit pour l'en-tte d'un document qui contient une longue
liste de rgles de style.
La proposition actuelle rpond ces interrogations en permettant aux auteurs d'inclure des
instructions de restitution l'intrieur de chaque lment HTML. Les indications de restitution
sont alors toujours disponibles au moment o l'agent utilisateur veut restituer chacun des
lments.
Dans de nombreux cas, les auteurs bnficieront d'une feuille de style commune un groupe de
documents. Auquel cas, l'parpillement des rgles de style travers le document entranera en
ralit une efficacit bien moindre que l'utilisation d'une feuille de style relie, puisque la feuille
de style sera dj prsente dans le cache local pour la plupart des documents. La disponibilit
publique de bonnes feuilles de style encouragera cette tendance.
8.2 Le rajout de style HTML
8.2.1 L'tablissement du langage de feuille de style par dfaut
Les auteurs doivent spcifier le langage de feuille de style des informations de style associes au
document HTML.
Les auteurs devraient utiliser l'lment META pour dfinir le langage de feuille de style par dfaut du
document. Par exemple, pour dfinir le langage CSS par dfaut, les auteurs devraient inclure la
dclaration suivante dans la section HEAD de leurs documents :
<meta http-equiv="Content-Style-Type" content="text/css">
On peut aussi dfinir le langage de feuille de style par dfaut avec les en-ttes HTTP. La dclaration
META prcdente quivaut l'en-tte HTTP :
Content-Style-Type: text/css
Les agents utilisateurs devraient dterminer le langage de feuille de style par dfaut du document en
suivant les tapes suivantes (de la plus haute priorit la plus basse) :
1.
2.
3.
50
Pour une souplesse optimale, les auteurs devraient dfinir les styles dans des feuilles de style externes.
8.2.3 Les informations de style dans l'en-tte : l'lment STYLE
L'lment STYLE permet aux auteurs de placer des rgles de style dans l'en-tte du document. HTML
autorise un nombre quelconque d'lments STYLE dans la section HEAD d'un document.
Les agents utilisateurs, qui ne reconnaissent pas les feuilles de style ou bien le langage de feuille de style
spcifique utilis par un lment STYLE, doivent dissimuler le contenu de l'lment STYLE. La
restitution du contenu de cet lment en tant que partie du texte du document constitue une erreur.
Certains langages de feuilles de style grent une syntaxe pour dissimuler le contenu aux agents
utilisateurs non conformes.
La syntaxe des donnes de style dpend du langage de feuille de style.
Certaines implmentations de feuille de style peuvent autoriser une plus grande varit de rgles dans
l'lment STYLE que dans l'attribut style. Par exemple, avec CSS, on peut dclarer les rgles l'intrieur
d'un lment STYLE pour :
toutes les instances d'un lment HTML particulier (par exemple, tous les lments P, tous les
lments H1, etc.) ;
toutes les instances d'un lment HTML appartenant une classe particulire (i.e., les lments
dont l'attribut class possde une valeur) ;
les instances uniques d'un lment HTML (i.e., un lment dont l'attribut id possde une valeur).
Les rgles de prsance et d'hritage des rgles de style dpendent du langage de feuille de style.
La dclaration CSS suivante, avec l'lment STYLE, met une bordure autour de chacun des lments H1
du document et les centre dans la page.
<head>
<style type="text/css">
h1 {border-width: 1; border: solid; text-align: center}
</style>
</head>
Pour indiquer que ces informations de style ne devraient s'appliquer qu'aux lments H1 appartenant
une classe particulire, nous modifions la rgle de cette faon :
<head>
<style type="text/css">
h1.maclasse {border-width: 1; border: solid; text-align: center}
</style>
</head>
<body>
<h1 class="maclasse"> Cet H1 est touché par notre style </h1>
<h1> Celui-ci ne l'est pas </h1>
</body>
Finalement, pour restreindre la porte des informations de style une instance unique d'lment H1,
spcifions l'attribut id :
<head>
<style type="text/css">
#monid {border-width: 1; border: solid; text-align: center}
</style>
</head>
<body>
<h1 class="maclasse"> Cet H1 n'est pas touché </h1>
<h1 id="monid"> Cet H1 est touché par le style </h1>
<h1> Cet H1 n'est pas touché </h1>
</body>
Tandis qu'on peut dfinir des informations de style pour pratiquement tous les lments HTML, deux
lments, DIV et SPAN, sont particulirement utiles dans la mesure o ils n'imposent aucune smantique
de prsentation (en dehors de la distinction type bloc/type en-ligne). Lorsqu'ils sont utiliss conjointement
avec les feuilles de style, ces lments permettent aux utilisateurs un dveloppement HTML illimit,
particulirement quand ils sont utiliss avec les attributs class et id.
51
Dans l'exemple suivant, nous utilisons l'lment SPAN pour spcifier le style de la police des premiers
mots d'un paragraphe en petites capitales.
<head>
<style type="text/css">
span.sc-ex { font-variant: small-caps; }
</style>
</head>
<body>
<p><span class="sc-ex">Les premiers mots</span> de
ce paragraphe en petites capitales.
</body>
Dans l'exemple suivant, nous utilisons l'lment DIV et l'attribut class pour dfinir la justification du
texte d'une succession de paragraphes qui constituent la section de rsum d'un article scientifique. Ces
informations de style pourraient tre rutilises pour d'autres sections de rsum en utilisant l'attribut
class ailleurs dans le document.
<head>
<style type="text/css">
div.resume { text-align: justify }
</style>
</head>
<body>
<div class="resume">
<p>Les outils de gestion de contenu Web
permettent de résoudre la plupart des problèmes
de production liés aux sites web tout en jetant
un pont entre les différents supports de diffusion
de l'information.</p>
<p>Mais l'engouement dont bénéficient ces
logiciels ne doit pas faire oublier que leur
déploiement reste difficile et
que leur marché est très mouvant.</p>
</div>
</body>
8.2.4 Les types de mdia
HTML autorise les auteurs concevoir des documents qui exploitent les caractristiques du mdia sur
lequel le document doit tre restitu (par exemple, cran graphique, cran de tlvision, appareil de
poches, navigateur synthse vocale, appareil tactile Braille, etc.). En spcifiant l'attribut media, les
auteurs permettent aux agents utilisateurs de charger et appliquer les feuilles de style de manire
slective. Veuillez consulter la liste des descripteurs de mdia reconnus.
Les dclarations des exemples suivants s'appliquent aux lments H1. Pour une projection dans une
runion de travail, toutes leurs instances apparatront en bleu. Pour une impression papier, toutes les
instances seront centres.
<head>
<style type="text/css" media="projection">
H1 { color: blue}
</style>
<style type="text/css" media="print">
h1 { text-align: center }
</style>
Cet exemple ajoute des effets sonores aux ancres pour une sortie vocale :
<style type="text/css" media="aural">
a { cue-before: uri(ding.aiff); cue-after: uri(dong.wav)}
</style>
</head>
La commande du mdia est particulirement intressante quand elle s'applique aux feuilles de style
externes, dans la mesure o les agents utilisateurs peuvent conomiser du temps en ne chargeant partir
52
du rseau que celles des feuilles de style qui concernent l'appareil courant. Par exemple, les navigateurs
vocaux peuvent s'pargner le chargement des feuilles de style conues pour une restitution visuelle.
8.3 Les feuilles de style externes
Les auteurs peuvent sparer les feuilles de style des documents HTML. Ce qui offre plusieurs avantages :
les auteurs et les gestionnaires de site Web peuvent partager les feuilles de style entre nombre de
documents (et de sites) ;
les auteurs peuvent changer la feuille de style sans devoir apporter des modifications au
document ;
les agents utilisateurs peuvent charger les feuilles de style slectivement (en fonction des
descriptions des mdias).
Donner comme valeur de l'attribut href la localisation du fichier de la feuille de style. Cette
valeur de l'attribut href est un URI.
Donner comme valeur de l'attribut type l'indication du langage de la ressource relie (la feuille
de style). Cela vite l'agent utilisateur de charger une feuille de style dans un langage de feuille
de style non reconnu ;
Indiquer si la feuille de style est persistente, prfre ou alternative :
o pour une feuille de style persistente, donner la valeur "stylesheet" l'attribut rel et ne
pas mettre d'attribut title ;
o pour une feuille de style prfre, donner la valeur "stylesheet" l'attribut rel et
nommer la feuille de style en spcifiant l'attribut title ;
o pour une feuille de style alternative, donner la valeur "alternate stylesheet" l'attribut
rel et nommer la feuille de style en spcifiant l'attribut title.
Les agents utilisateurs devraient fournir aux utilisateurs les moyens de passer en revue et de choisir les
feuilles de style alternatives dans une liste. On recommande la valeur de l'attribut title comme nom pour
chaque option.
Dans cet exemple, nous spcifions d'abord une feuille de style persistente qui se trouve dans le fichier
"meustilu.css" :
<link href="meustilu.css" rel="stylesheet" type="text/css">
53
54
autorise une spcification compacte des feuilles de style. Par exemple, l'auteur peut spcifier la famille de
la police de tous les lments de BODY par une seule rgle applique l'lment BODY.
8.5 La dissimulation des donnes de style l'agent utilisateur
Certains langages de feuille de style grent une syntaxe qui permet aux auteurs de dissimuler le contenu
de l'lment STYLE aux agents utilisateurs non conformes.
Cet exemple montre, dans le cas de CSS, la manire de masquer par un commentaire le contenu de
l'lment STYLE pour s'assurer que les agents utilisateurs non conformes ne vont pas le restituer comme
du texte.
<style type="text/css">
<!-h1 { color: red }
p { color: blue}
-->
</style>
2.
3.
Le formatage
1. La couleur d'arrire-plan
2. L'alignement
3. Les objets flottants
Faire flotter un objet
Faire flotter le texte autour d'un objet
Les polices
1. Les lments de style de police : les lments TT, I, B, BIG, SMALL, STRIKE, S et U
2. Les lments modificateurs de police : les lments FONT et BASEFONT
Les rgles : l'lment HR
Cette section de la spcification aborde certains lments et attributs HTML qui peuvent tre utiliss
pour la mise en forme visuelle des lments. Nombre d'entre eux sont dconseills.
9.1 Le formatage
9.1.1 La couleur d'arrire-plan
Lattribut bgcolor tablit la couleur d'arrire-plan du canevas du corps du document (l'lment BODY) ou
des tables (les lments TABLE, TR, TH et TD). On peut utiliser des attributs supplmentaires avec
l'lment BODY pour spcifier la couleur du texte.
Cet attribut est dconseill en faveur des feuilles de style pour spcifier les informations de couleur
d'arrire-plan.
9.1.2 L'alignement
Il est possible d'aligner les lments de bloc (tables, images, objets, paragraphes, etc.) sur le canevas avec
l'attribut align. Bien que cet attribut puisse se placer sur de nombreux lments HTML, l'ventail des
valeurs possibles diffre parfois d'un lment l'autre. Ici nous abordons seulement la signification de
l'attribut align pour le texte.
Lattribut align spcifie l'alignement horizontal de son lment par rapport son environnement. Les
valeurs possibles sont :
55
La valeur par dfaut est tributaire de la direction de base du texte. Pour un texte de gauche--droite, la
valeur par dfaut est align=left, tandis que pour un texte de droite--gauche c'est align=right.
EXEMPLE DCONSEILL :
Cet exemple centre un titre sur le canevas.
<h1 align="center"> Comment tailler le bois </h1>
En utilisant le langage CSS, par exemple, on pourrait obtenir le mme effet par :
<head>
<title>Comment tailler le bois</title>
<style type="text/css">
h1 { text-align: center}
</style>
<body>
<h1> Comment tailler le bois </h1>
Remarquez que cela centrerait tous les lments H1. On pourrait rduire la porte du style en plaant un
attribut class sur l'lment :
<head>
<title>Comment tailler le bois</title>
<style type="text/css">
h1.bois {text-align: center}
</style>
<body>
<h1 class="bois"> Comment tailler le bois </h1>
EXEMPLE DCONSEILL :
De la mme faon, pour aligner un paragraphe droite sur le canevas avec l'attribut HTML align, on
pourrait avoir :
<p align="right">...Beaucoup de texte...
ce qui donnerait avec CSS :
<head>
<title>Comment tailler le bois</title>
<style type="text/css">
p.monparagraphe {text-align: right}
</style>
<body>
<p class="monparagraphe">...Beaucoup de texte...
EXEMPLE DCONSEILL :
Pour aligner un ensemble de paragraphes droite, regroupez-les avec un lment DIV :
<div align="right">
<p>...texte du premier paragraphe...
<p>...texte du deuxime paragraphe...
<p>...texte du troisime paragraphe...
</div>
Avec CSS, la proprit text-align est hrite de l'lment parent ; on peut donc utiliser :
<head>
<title>Comment tailler le bois</title>
<style type="text/css">
div.mesparagraphes {text-align: right}
</style>
<body>
<div class="mesparagraphes">
<p>...texte du premier paragraphe...
<p>...texte du deuxime paragraphe...
<p>...texte du troisime paragraphe...
</div>
Pour centrer le document entier avec CSS :
<head>
<title>Comment tailler le bois</title>
<style type="text/css">
56
left : fait flotter l'objet vers la marge gauche courante. Le texte qui suit s'coule le long du flanc
droit de l'image ;
right : fait flotter l'objet vers la marge droite courante. Le texte qui suit s'coule le long du flanc
gauche de l'image.
EXEMPLE DCONSEILL :
L'exemple suivant montre comment faire flotter un lment IMG vers la marge gauche courante du
canevas.
<img align="left" src="http://foo.com/animage.gif" alt="mon chat">
Certains attributs d'alignement admettent galement la valeur "center", qui n'entrane aucun flottement,
mais centre l'objet l'intrieur des marges courantes. Cependant, pour les lments P et DIV, la valeur
"center" entrane le centrage de leur contenu.
Faire flotter le texte autour d'un objet
Lattribut clear de l'lment BR, contrle l'coulement du texte autour des objets flottants.
Il spcifie o la prochaine ligne devrait apparatre, dans un navigateur visuel, aprs le saut de ligne
provoqu par cet lment. Cet attribut prend en compte les objets flottants (images, tables, etc.). Les
valeurs possibles sont :
En faisant appel aux feuilles de style, on pourrait spcifier que tous les sauts de ligne devraient se
comporter de cette faon pour les objets (images, tables, etc.) flottant contre la marge gauche. Avec CSS,
on pourrait obtenir cet effet comme suit :
<style type="text/css">
br { clear: left }
</style>
Pour spcifier ce comportement sur une instance particulire de l'lment BR, on pourrait combiner
l'indication de style et l'attribut id :
<head>
...
57
<style type="text/css">
br#monbr { clear: left }
</style>
</head>
<body>
<p>...
9.2 Les polices
Les lments HTML suivants spcifient des informations de police. Bien qu'ils ne soient pas tous
dconseills, on dcourage leur utilisation en faveur des feuilles de style.
9.2.1 Les lments de style de police : les lments TT, I, B, BIG, SMALL, STRIKE, S et U
La restitution des lments de style de police dpend de l'agent utilisateur. Ce qui suit n'est qu'une
description informative.
TT : restitu sous la forme d'un texte de tlimprimeur ou chasse fixe [ndt. monospaced].
I : restitu sous la forme d'un texte en italique.
B : restitu sous la forme d'un texte en caractres gras.
BIG : restitue le texte dans une grande taille de police.
SMALL : restitue le texte dans une petite taille de police.
STRIKE et S : Dconseill. Restituent un texte barr.
U : Dconseill. Restitue un texte soulign.
La phrase suivante montre divers types de texte :
<p> <b>gras</b>, <i>italique</i>, <b><i>gras italique</i></b>,
<tt>téléimprimeur</tt>, texte <big>grand</big> et <small>petit</small>.
Cette phrase pourrait tre restitue comme suit :
Il est possible d'obtenir une bien plus grande diversit d'effets de police en utilisant les feuilles de style.
Pour spcifier un texte italique en bleu dans un paragraphe avec CSS :
<head>
<style type="text/css">
p#mypar {font-style: italic; color: blue}
</style>
</head>
<p id="mypar">...Beaucoup de texte en italique de couleur bleue...
Les lments de style de police doivent tre correctement imbriqus. La restitution des lments de style
de police imbriqus dpend de l'agent utilisateur.
9.2.2 Les lments modificateurs de police : les lments FONT et BASEFONT
Les lments FONT et BASEFONT sont dconseills.
L'lment FONT change la taille de la police et la couleur du texte qu'il contient.
L'lment BASEFONT tablit la taille de police de base (en utilisant l'attribut size). Les changements de
taille de police obtenus avec l'lment FONT sont relatifs la taille de police de base tablie par l'lment
BASEFONT. Si l'lment BASEFONT n'est pas prsent, alors la taille de police de base vaut "3".
EXEMPLE DCONSEILL :
L'exemple suivant illustre les diffrences entre les sept tailles de police disponibles avec l'lment
FONT :
<p><font size=1>size=1</font>
<font size=2>size=2</font>
<font size=3>size=3</font>
<font size=4>size=4</font>
<font size=5>size=5</font>
<font size=6>size=6</font>
<font size=7>size=7</font>
Ceci pourrait tre restitu par :
58
L'illustration suivante montre l'effet des tailles de police relatives par rapport une taille de police de
base valant "3" :
La taille de police de base ne s'applique pas aux titres, sauf quand ceux-ci sont modifis par un lment
FONT avec un changement de taille de police relatif.
9.3 Les rgles : l'lment HR
L'lment HR entrane la restitution d'une rgle horizontale par l'agent utilisateur.
La quantit d'espace vertical insr entre une rgle et le contenu qui l'entoure dpend de l'agent
utilisateur.
EXEMPLE DCONSEILL :
Cet exemple centre les rgles, en les dimensionnant la moiti de la largeur disponible entre les marges.
La rgle du haut a une paisseur par dfaut tandis que les deux du bas sont fixes 5 pixels. La rgle du
bas devrait tre restitue dans une couleur pleine sans ombrage :
<hr width="50%" align="center">
<hr size="5" width="50%" align="center">
<hr noshade size="5" width="50%" align="center">
La restitution de ces rgles pourraient tre la suivante :
10 Les cadres
Sommaire
1.
2.
3.
4.
5.
59
</head>
<frameset cols="20%, 80%">
<frameset rows="100, 200">
<frame src="contenu_du_cadre1.html">
<frame src="contenu_du_cadre2.gif">
</frameset>
<frame src="contenu_du_cadre3.html">
<noframes>
<p>Ce document avec un jeu d'encadrement contient :
<ul>
<li><a href="contenu_du_cadre1.html">Un contenu sympa</a>
<li><img src="contenu_du_cadre2.gif" alt="Une image sympa">
<li><a href="contenu_du_cadre3.html">D'autres contenus sympas</a>
</ul>
</noframes>
</frameset>
</html>
ce qui pourrait crer la disposition de cadres suivante :
--------------------------------------|
|
|
|
|
|
| Cadre 1 |
|
|
|
|
|
|
|
|------------- |
|
|
|
Cadre 3
|
|
|
|
|
|
|
|
|
|
| Cadre 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------Si l'agent utilisateur ne peut pas afficher les cadres ou bien n'est pas configur pour le faire, alors il
restituera le contenu de l'lment NOFRAMES.
10.2 La disposition des cadres
Le document HTML qui dcrit la disposition des cadres (appel document avec jeu d'encadrement [ndt.
frameset document]) obit une structure diffrente de celle du document HTML sans cadres. Le
document standard possde une section HEAD et une section BODY. Le document avec jeu
d'encadrement possde une section HEAD et une section FRAMESET la place de BODY.
La section FRAMESET du document spcifie la disposition des vues dans la fentre principale de l'agent
utilisateur. En outre, la section FRAMESET peut contenir un lment NOFRAMES afin d'offrir un
contenu de remplacement aux agents utilisateurs qui ne reconnaissent pas les cadres ou bien ne sont pas
configurs pour afficher ces cadres.
Les lments, qui normalement seraient placs dans la section BODY, ne doivent pas apparatre avant le
premier lment FRAMESET, sinon cet lment FRAMESET sera ignor.
10.2.1 L'lment FRAMESET
L'lment FRAMESET spcifie la disposition de la fentre principale de l'utilisateur selon des
subdivisions rectangulaires.
60
61
avec jeu d'encadrement et nommer cet objet avec un attribut id. Tout document qui est le contenu d'un
cadre dans le jeu d'encadrement peut se rfrer cet identifiant.
L'exemple suivant illustre la manire dont un script pourrait appeler un lment OBJECT dfini pour le
jeu d'encadrement entier :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Voici un jeu d'encadrement avec un OBJECT dans HEAD</title>
<!-- Cet OBJECT n'est pas restitu ! -->
<object id="monobjet" data="data.bar"></object>
</head>
<frameset>
<frame src="bianca.html" name="bianca">
</frameset>
</html>
<!-- Dans le document bianca.html -->
<html>
<head>
<title>La page de Bianca</title>
</head>
<body>
...le dbut du document...
<p>
<script type="text/javascript">
parent.monobjet.proprit
</script>
...le reste du document...
</body>
</html>
10.2.2 L'lment FRAME
L'lment FRAME dfinit le contenu et l'apparence d'un seul cadre.
L'tablissement du contenu initial d'un cadre
L'attribut src spcifie le document initial que le cadre va contenir.
Soit l'exemple de document HTML suivant :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Un document avec jeu d'encadrement</title>
</head>
<frameset cols="33%,33%,33%">
<frameset rows="*,200">
<frame src="contenu_du_cadre1.html">
<frame src="contenu_du_cadre2.gif">
</frameset>
<frame src="contenu_du_cadre3.html">
<frame src="contenu_du_cadre4.html">
</frameset>
</html>
Celui-ci devrait produire une disposition des cadres semblable :
62
-----------------------------------------|Cadre 1 |Cadre 3
|Cadre 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
------------- |
|
|
|Cadre 2
|
|
|
|
|
|
|
|
|
|
|
-----------------------------------------ainsi qu'il va entraner l'agent utilisateur charger chaque fichier dans une vue spare.
Le contenu d'un cadre ne doit pas se trouver dans le mme document que la dfinition de ce cadre.
EXEMPLE ILLGAL :
La dfinition de jeu d'encadrement suivante n'est pas lgale pour HTML, parce que le contenu du
deuxime cadre se trouve dans le mme document que le jeu d'encadrement.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Un document avec jeu d'encadrement</title>
</head>
<frameset cols="50%,50%">
<frame src="contenu_du_cadre1.html">
<frame src="#ancre_dans_le_meme_document">
<noframes>
...un texte...
<h2><a name="ancre_dans_le_meme_document">Passage important</a></h2>
...un texte...
</noframes>
</frameset>
</html>
La restitution visuelle d'un cadre
L'exemple suivant illustre l'utilisation des attributs dcoratifs de l'lment FRAME. On spcifie que le
cadre 1 n'aura pas de barre de dfilement. Le cadre 2 laissera un espace autour de son contenu
(initialement, un fichier d'image) et ne sera pas redimensionnable. Aucune bordure ne sera dessine entre
les cadres 3 et 4. Des bordures seront dessines (par dfaut) entre les cadres 1, 2 et 3.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Un document avec jeu d'encadrement</title>
</head>
<frameset cols="33%,33%,33%">
<frameset rows="*,200">
<frame src="contenu_du_cadre1.html" scrolling="no">
<frame src="contenu_du_cadre2.gif"
marginwidth="10" marginheight="15"
noresize>
</frameset>
<frame src="contenu_du_cadre3.html" frameborder="0">
<frame src="contenu_du_cadre4.html" frameborder="0">
</frameset>
</html>
63
64
</head>
<body>
...commencement du document...
<p>Maintenant vous pouvez aller la <a href="slide2.html">diapositive 2.</a>
...suite du document...
<p>Vous vous dbrouillez bien. Allez la
<a href="slide3.html">diapositive 3.</a>
</body>
</html>
10.3.2 La smantique de cible
Les agents utilisateurs devraient dterminer le cadre cible, dans lequel charger une ressource relie, selon
la prsance suivante (de la priorit la plus leve la plus basse) :
1.
2.
3.
4.
Si l'attribut target d'un lment vise un cadre connu, quand l'lment est activ (i.e., un lieu est
suivi ou un formulaire est soumis), la ressource dsigne par l'lment devrait se charger dans le
cadre cible ;
Si cet lment n'a pas d'attribut target et, par contre, l'lment BASE en a un, c'est l'attribut
target de l'lment BASE qui dtermine le cadre ;
Si ni cet lment ni l'lment BASE ne se rfrent une cible, alors la ressource dsigne par
l'lment devrait se charger dans le cadre qui contient l'lment ;
Si un attribut target se rfre un cadre C inconnu, l'agent utilisateur devrait crer une
nouvelle fentre et un nouveau cadre, puis assigner le nom C au cadre et enfin charger la
ressource dsigne par l'lment dans le nouveau cadre.
65
11 Les formulaires
Sommaire
1.
2.
66
67
Les auteurs crent des boutons avec les lments BUTTON ou INPUT.
Les cases cocher
Les cases cocher (et les boutons radio ) sont des interrupteurs marche/arrt qui peuvent tre
actionns par l'utilisateur. L'interrupteur est sur marche quand l'attribut checked de l'lment
de commande est spcifi. Lors de la soumission du formulaire, seules les commandes de cases
cocher sur marche peuvent devenir des commandes russies.
Dans un formulaire, plusieurs cases cocher peuvent partager le mme nom de commande.
Ainsi, par exemple, les cases cocher permettent aux utilisateurs de slectionner plusieurs
valeurs pour la mme proprit. On utilise l'lment INPUT pour crer une commande de case
cocher.
Les boutons radio
Les boutons radio sont analogues aux cases cocher, la diffrence que, quand plusieurs
boutons partage le mme nom de commande, alors ils s'excluent mutuellement : quand l'un est
mis sur marche , tous les autres avec le mme nom se mettent sur arrt . On utilise
l'lment INPUT pour crer une commande de bouton radio.
Si aucun des boutons radio, dans un jeu partageant le mme nom de
commande, n'est en position marche , alors le comportement de l'agent
utilisateur, pour le choix de la commande qui est initialement sur marche ,
n'est pas dfini.
En raison des diffrences d'interprtation entre les agents utilisateurs, les auteurs devraient
s'assurer qu'un des boutons radio dans un jeu soit mis initialement sur marche .
Les menus
Les menus proposent des options aux utilisateurs parmi lesquelles faire un choix. L'lment
SELECT cre un menu, en conjonction avec les lments OPTGROUP et OPTION.
La saisie de texte
Les auteurs peuvent crer deux types de commande qui permettent aux utilisateurs la saisie d'un
texte. L'lment INPUT cre une commande pour une saisie sur une seule ligne et l'lment
TEXTAREA cre une commande pour une saisie sur plusieurs lignes. Dans les deux cas, le texte
saisi devient la valeur courante de la commande.
La slection d'un fichier
Ce type de commande permet l'utilisateur de slectionner un fichier de sorte que son contenu
puisse tre soumis avec le formulaire. On utilise l'lment INPUT pour crer une commande de
slection de fichier.
Les commandes caches
Les auteurs peuvent crer des commandes qui ne sont pas restitues mais dont les valeurs sont
soumises avec le formulaire. Les auteurs utilisent en gnral ce type de commande pour
enregistrer les informations entre les changes client/serveur, qui seraient perdues sinon du fait
que le protocole HTTP est un protocole sans tat. On utilise l'lment INPUT pour crer une
commande cache.
Les commandes d'objets
Les auteurs peuvent insrer des objets gnriques dans les formulaires de telle sorte que les
valeurs qui leur sont associes soient soumises en mme temps que les autres commandes. On
utilise l'lment OBJECT pour crer une commande d'objet.
Les lments utiliss pour crer les commandes apparaissent gnralement dans un lment FORM, mais
ils peuvent aussi apparatre en dehors de la dclaration de l'lment FORM quand on les utilise pour
construire des interfaces utilisateurs. Ceci est abord dans la section sur les vnements intrinsques.
Remarquez que les commandes en dehors d'un formulaire ne peuvent pas tre des commandes russies.
11.3 L'lment FORM
L'lment FORM agit comme conteneur pour les commandes. Il spcifie :
68
l'encodage de caractres qui doit tre accept par le serveur pour manipuler ce formulaire
(l'attribut accept-charset). Les agents utilisateurs peuvent avertir l'utilisateur de la valeur de
l'attribut accept-charset et/ou empcher que celui-ci n'entre des caractres non reconnus.
Un formulaire peut contenir un texte et un balisage (paragraphes, listes, etc.) en plus des commandes de
formulaire.
L'exemple suivant montre un formulaire qui va tre trait par le programme ajoutermembre une fois
soumis. Le formulaire sera envoy au programme l'aide de la mthode HTTP "post".
<form action="http://unsite.com/prog/ajoutermembre" method="post">
...contenu du formulaire...
</form>
11.4 L'lment INPUT
11.4.1 Les types de commande crs par l'lment INPUT
Le type de commande dfini par l'lment INPUT est fonction de la valeur de l'attribut type :
text
Cre une commande de saisie de texte sur une seule ligne.
password
Comme pour la valeur "text", mais le texte saisi est restitu de manire dissimuler les
caractres (par exemple, une succession de caractres astrisques * ). Ce type de commande
est souvent employ pour les entres sensibles comme les mots de passe. Remarquez que la
valeur courante est le texte saisi par l'utilisateur, non le texte restitu par l'agent utilisateur.
Remarque : Les dveloppeurs d'applications devraient remarquer que ce mcanisme n'offre
qu'une protection lgre. Bien qu'il soit masqu par l'agent utilisateur aux yeux d'un ventuel
observateur, le mot de passe est transmis au serveur en texte clair et peut tre lu par quiconque
ayant un accs granulaire au rseau.
checkbox
Cre une case cocher.
radio
Cre un bouton radio .
submit
Cre un bouton de soumission.
image
Cre un bouton de soumission graphique. La valeur de l'attribut src spcifie l'URI de l'image qui
va dcorer le bouton. Pour des questions d'accessibilit, les auteurs devraient fournir un texte de
remplacement pour l'image au moyen de l'attribut alt.
Quand un dispositif de pointage est employ pour cliquer sur l'image, le formulaire est soumis et
les coordonnes du clic sont passes au serveur. La coordonne x se mesure en pixels partir
de la gauche de l'image et la coordonne y en pixels partir du haut de l'image. Les donnes
soumises comprennent les valeurs nom.x=valeur-de-x et nom.y=valeur-de-y, dans lesquelles le
nom est la valeur de l'attribut name, et valeur-de-x et valeur-de-y sont les valeurs des
coordonnes x et y respectivement.
Si le serveur entreprend diverses actions en fonction de l'endroit cliqu, l'utilisateur d'un
navigateur non-graphique sera dsavantag. Pour cette raison, les auteurs devraient considrer
ces approches alternatives :
Utiliser plusieurs bouton de soumission (chacun avec sa propre image) au lieu d'un seul
bouton de soumission graphique. Les auteurs peuvent employer les feuilles de style
pour contrler le positionnement de ces boutons ;
Utiliser une image cliquable ct client en mme temps que des scripts.
reset
Cre un bouton de rinitialisation.
button
Cre un bouton poussoir. Les agents utilisateurs devraient utiliser la valeur de l'attribut value
comme intitul du bouton.
hidden
69
Dans l'exemple suivant, la fonction JavaScript verifier est dclenche quand l'vnement "onclick" se
produit :
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript">
</head>
<body>
<form action="..." method="post">
<p>
<input type="button" value="Cliquez moi" onclick="verifier()">
</form>
</body>
L'exemple suivant montre la manire dont le contenu d'un fichier spcifi par l'utilisateur peut tre
soumis avec le formulaire. L'utilisateur est invit donner son nom et la liste des noms de fichier dont le
contenu devrait tre soumis avec le formulaire. En spcifiant la valeur "multipart/form-data" pour
l'attribut enctype, chaque contenu de fichier sera conditionn pour soumission dans une section distincte
d'un document en plusieurs parties.
<form action="http://server.dom/cgi/gestion"
enctype="multipart/form-data"
method="post">
<p>
Quel est votre nom ? <input type="text" name="nom_expediteur">
Quels sont les fichiers à envoyer ? <input type="file" name="nom_des_fichiers">
</p>
</form>
70
si un lment OPTION possde un attribut selected, alors celui-ci devrait tre prslectionn ;
si l'lment SELECT a un attribut multiple spcifi et plusieurs lments OPTION avec l'attribut
selected spcifi, alors ceux-ci devraient tous tre prslectionns ;
71
il s'agit d'une erreur si plusieurs lments OPTION ont un attribut selected alors que l'attribut
multiple n'est pas spcifi sur l'lment SELECT. Les agents utilisateurs peuvent varier dans la
prise en charge de cette erreur, mais ils ne devraient pas prslectionner plus d'une option.
Lors de la restitution de l'option d'un menu, l'agent utilisateur devrait utiliser la valeur de l'attribut label
de l'lment OPTION comme intitul pour l'option. Si cet attribut n'est pas spcifi, l'agent utilisateur
devrait utiliser le contenu de l'lment OPTION.
L'attribut label de l'lment OPTGROUP spcifie l'intitul d'un groupe d'options.
Dans cet exemple, nous crons un menu qui permet l'utilisateur de slectionner lequel parmi sept
composants logiciels choisir. Le premier et le deuxime composant sont prslectionns mais ils peuvent
tre dslectionns par l'utilisateur. Les composants restants ne sont pas prslectionns. L'attribut size
dclare que le menu ne devrait avoir que quatre ranges, mme si l'utilisateur peut effectuer un choix
parmi sept options. La mise disposition des autres options devrait se faire au moyen d'un mcanisme de
dfilement.
L'lment SELECT est suivi par un bouton de soumission et un de rinitialisation.
<form action="http://unsite.com/prog/choisir_composant" method="post">
<p>
<select multiple size="4" name="selection_composant">
<option selected value="composant_1_a">Composant_1</option>
<option selected value="composant_1_b">Composant_2</option>
<option>Composant_3</option>
<option>Composant_4</option>
<option>Composant_5</option>
<option>Composant_6</option>
<option>Composant_7</option>
</select>
<input type="submit" value="Envoyer"><input type="reset">
</p>
</form>
Seules les options slectionnes russiront (en utilisant le nom de commande "selection_composant"). Si
aucune option n'est slectionne, la commande n'est pas russie et ni le nom ni la valeur ne sont envoys
au serveur la soumission du formulaire. Remarquez que l'attribut value est spcifi, il dtermine donc la
valeur initiale de la commande, sinon ce serait le contenu de l'lment.
Dans ce exemple, nous employons l'lment OPTGROUP pour regrouper les options. Soit le balisage
suivant :
<form action="http://unsite.com/prog/unprogramme" method="post">
<p>
<select name="ComOS">
<option selected label="aucun" value="aucun">Aucun</option>
<optgroup label="PortMaster 3">
<option label="3.7.1" value="pm3_3.7.1">PortMaster 3 avec ComOS 3.7.1</option>
<option label="3.7" value="pm3_3.7">PortMaster 3 avec ComOS 3.7</option>
<option label="3.5" value="pm3_3.5">PortMaster 3 avec ComOS 3.5</option>
</optgroup>
<optgroup label="PortMaster 2">
<option label="3.7" value="pm2_3.7">PortMaster 2 avec ComOS 3.7</option>
<option label="3.5" value="pm2_3.5">PortMaster 2 avec ComOS 3.5</option>
</optgroup>
<optgroup label="IRX">
<option label="3.7R" value="IRX_3.7R">IRX avec ComOS 3.7R</option>
<option label="3.5R" value="IRX_3.5R">IRX avec ComOS 3.5R</option>
</optgroup>
</select>
</form>
celui-ci reprsenterait le regroupement suivant :
Aucun
PortMaster 3
3.7.1
3.7
3.5
72
PortMaster 2
3.7
3.5
IRX
3.7R
3.5R
Les agents utilisateurs visuels peuvent autoriser les utilisateurs effectuer une slection partir des
groupes d'options au moyen d'un menu hirarchique ou d'un autre mcanisme qui reflte la structure des
options.
Un agent utilisateur graphique pourrait restituer ceci par :
Cette image montre un lment SELECT qui est restitu par un menu en cascade. L'intitul suprieur du
menu affiche la valeur slectionne la nouvelle valeur (PortMaster 2, 3.7). Remarquez que chaque sousmenu affiche l'intitul d'un lment OPTGROUP, ou d'un lment OPTION.
11.7 L'lment TEXTAREA
L'lment TEXTAREA cre une commande de saisie de texte multilignes. Les agents utilisateurs
devraient utiliser le contenu de cet lment comme valeur initiale et restituer initialement ce texte.
Cet exemple cre une commande TEXTAREA qui fait vingt ranges par quatre-vingt colonnes et qui
contient initialement deux lignes de texte. La commande TEXTAREA est suivie par un bouton de
soumission et un de rinitialisation.
<form action="http://unsite.com/prog/lecture-texte" method="post">
<p>
<textarea name="le_texte" rows="20" cols="80">
Première ligne de texte initial.
Seconde ligne de texte initial.
</textarea>
<input type="submit" value="Envoyer"><input type="reset">
</p>
</form>
La spcification de l'attribut readonly permet l'auteur d'afficher un texte non modifiable dans la
commande TEXTAREA. Ce n'est pas la mme chose que d'utiliser un texte balis standard dans un
document, parce que la valeur de l'lment TEXTAREA est soumise avec le formulaire.
11.8 Les labels
Quelques commandes de formulaire ont des labels qui leur sont automatiquement associs (les boutons
poussoirs) tandis que la plupart d'entre elles en sont dpourvues (les champs de texte, les cases cocher
et les boutons radio ainsi que les menus).
Pour celles des commandes qui ont un label implicite, les agents utilisateurs devraient utiliser la valeur de
l'attribut value comme chane pour le label.
On utilise l'lment LABEL pour spcifier les labels des commandes qui n'ont pas de labels implicites.
11.8.1 L'lment LABEL
L'lment LABEL peut s'utiliser pour attacher des informations aux commandes. Chaque lment
LABEL est associ exactement une commande de formulaire.
L'attribut for associe explicitement un label une autre commande : la valeur de l'attribut for doit tre la
mme que celle de l'attribut id de l'lment de commande associ. On peut associer plusieurs lments
LABEL la mme commande en crant plusieurs rfrences via l'attribut for.
Cet exemple cre une table qui est utilise pour aligner deux commandes de saisie de texte et les labels
qui leur sont associs. Chaque label est associ explicitement une commande de saisie de texte :
<form action="..." method="post">
73
<table>
<tr>
<td><label for="label_prenom">Prénom</label>
<td><input type="text" name="prenom" id="label_prenom">
<tr>
<td><label for="label_nom">Nom</label>
<td><input type="text" name="nom" id="label_nom">
</table>
</form>
Cet exemple reprend un exemple de formulaire prcdent et y inclut des lments LABEL.
<form action="http://unsite.com/prog/ajoutermembre" method="post">
<p>
<label for="label_prenom">Prénom : </label>
<input type="text" id="label_prenom"><br>
<label for="label_nom">Nom : </label>
<input type="text" id="label_nom"><br>
<label for="label_email">E-mail : </label>
<input type="text" id="label_email"><br>
<input type="radio" name="genre" value="homme"> Homme<br>
<input type="radio" name="genre" value="femme"> Femme<br>
<input type="submit" value="Envoyer"> <input type="reset">
</p>
</form>
Pour associer implicitement un label une autre commmande, l'lment de commande doit se trouver
l'intrieur de l'lment LABEL. Auquel cas, cet lment LABEL ne peut contenir qu'un seul lment de
commande. Le label en question peut se placer avant ou aprs la commande associe.
Dans cet exemple, nous associons implicitement deux labels deux commandes de saisie de texte :
<form action="..." method="post">
<p>
<label>
Prénom
<input type="text" name="prenom">
</label>
<label>
<input type="text" name="nom">
Nom
</label>
</p>
</form>
Remarquez qu'on ne peut pas employer cette technique quand la disposition est assure par une table, le
label tant dans une cellule et la commande associe dans une autre cellule.
Quand un lment LABEL reoit le focus, celui-ci communique ce focus la commande qui lui est
associe.
11.9 Donner le focus un lment
Dans un document HTML, un lment doit recevoir le focus par le biais de l'utilisateur afin de devenir
actif et de remplir sa fonction. Par exemple, les utilisateurs doivent activer le lien spcifi par l'lment A
pour suivre le lien en question. De la mme manire, les utilisateurs doivent donner le focus l'lment
TEXTAREA pour y saisir un texte.
Il y a plusieurs faons de donner l'attention un lment :
74
2.
3.
Ceux des lments qui reconnaissent l'attribut tabindex et lui assignent une valeur positive sont
parcourus en premier. La navigation procde partir de l'lment avec la plus petite valeur pour
l'attribut tabindex vers l'lment avec la valeur la plus leve. Les valeurs ne se suivent pas
forcment ni doivent commencer une valeur particulire. Les lments dont les valeurs de
l'attribut tabindex sont identiques devraient tre parcourus dans l'ordre de leur apparition dans le
flux de caractre ;
Ceux des lments qui ne reconnaissent pas l'attribut tabindex, ou bien le reconnaissent et lui
assigne une valeur de "0", sont parcourus ensuite. Ces lments sont parcourus dans l'ordre de
leur apparition dans le flux de caractres ;
Les lments qui sont inactifs ne participent pas dans l'ordre de tabulation.
Les lments suivants reconnaissent l'attribut tabindex : A, AREA, BUTTON, INPUT, OBJECT,
SELECT, et TEXTAREA.
Dans cet exemple, l'ordre de tabulation sera le suivant : l'lment BUTTON, les lments INPUT en
ordre (remarquez que celui nomm "champs1" partage la mme valeur d'attribut tabindex que le bouton,
mais "champs1" apparat plus tard dans le flux de caractres) et finalemnt le lien cr par l'lment A.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Un document avec FORM</title>
</head>
<body>
...un texte...
<p>Aller sur le
<a tabindex="10" href="http://www.w3.org/">site Web du W3C.</a>
...suite du texte...
<button type="button" name="base_de_donnees"
tabindex="1" onclick="base_de_donnees()">
Obtenir la base de donnes courante.
</button>
...suite du texte...
<form action="..." method="post">
<p>
<input tabindex="1" type="text" name="champs1">
<input tabindex="2" type="text" name="champs2">
<input tabindex="3" type="submit" name="submit">
</p>
</form>
</body>
</html>
11.9.2 Les cls d'accs
La pression de la cl d'accs assigne un lment lui donne le focus. L'action qui survient quand
l'lment reoit l'attention est fonction de l'lment. Par exemple, quand l'utilisateur active un lien dfini
par l'lment A, l'agent utilisateur suit en gnral le lien. Quand l'utilisateur active un bouton radio,
l'agent utilisateur change la valeur du bouton radio. Quand l'utilisateur active un champ de texte, la saisie
devient possible, etc.
Les lments suivants reconnaissent l'attribut accesskey : A, AREA, BUTTON, INPUT, LABEL et
LEGEND, ainsi que TEXTAREA.
75
Cet exemple assigne la cl d'accs U au label associ une commande INPUT. Le fait d'appuyer sur
la cl d'accs donne l'attention au label, qui son tour la transmet la commande associe. L'utilisateur
peut alors saisir un texte dans la zone INPUT.
<form action="..." method="post">
<p>
<label for="label_utilisateur" accesskey="U">
User Name
</label>
<input type="text" name="utilisateur" id="label_utilisateur">
</p>
</form>
Dans cet exemple, nous assignons une cl d'accs un lien dfini par l'lment A. La frappe de cette cl
d'accs conduit l'utilisateur vers un autre document, ici une table des matires.
<p><a accesskey="T"
rel="contents"
href="http://quelquepart.com/specification/table_des_matieres.html">
Table des matières</a>
L'invocation des cls d'accs est fonction du systme sous-jacent. Par exemple, sur les machines faisant
tourner le systme MS Windows, on devra en gnral presser la touche alt en plus de la cl d'accs.
Sur les systmes Apple, ce sera la touche cmd qu'il faudra appuyer en plus de la cl d'accs.
La restitution des cls d'accs est fonction de l'agent utilisateur. Nous recommandons aux auteurs
d'inclure la cl d'accs dans le texte du label ou partout o la cl d'accs doit s'appliquer. Les agents
utilisateurs devraient restituer la valeur d'une cl d'accs de sorte mettre en vidence son rle et la
distinguer des autres caractres (par exemple, en la soulignant).
11.10 Les commandes inactives et en lecture seule
Dans les situations pour lesquelles les entres de l'utilisateur sont soit indsirables, soit hors de propos, il
importe de pouvoir rendre une commande inactive ou de la restituer en lecture seule. Par exemple, on
peut vouloir que le bouton de soumission d'un formulaire reste inactif tant que l'utilisateur n'a pas entr
certaines donnes obligatoires. De la mme manire, l'auteur peut vouloir inclure un bout de texte en
lecture seule, qui doit tre soumis comme valeur en mme temps que le formulaire. Les sections
suivantes dcrivent les commandes inactives et celles en lecture seule.
11.10.1 Les commandes inactives
Quand il est prsent, l'attribut disabled produit l'effet suivant sur un lment :
Les lments suivants reconnaissent l'attribut disabled : BUTTON, INPUT, OPTGROUP, OPTION,
SELECT, et TEXTAREA.
Cet attribut est hrit mais les dclarations locales surclassent la valeur hrite.
La manire dont les lments inactifs sont restituts est fonction de l'agent utilisateur. Par exemple,
certains agents utilisateurs restituent en gris les articles de menu, les labels de bouton, etc. qui sont
inactifs.
Dans cet exemple, l'lment INPUT est inactif. C'est pourquoi il ne peut pas recevoir l'entre de
l'utilisateur et sa valeur ne peut pas tre soumise avec le formulaire.
<input disabled name="fred" value="stone">
Remarque : Seul un script peut modifier dynamiquement la valeur de l'attribut disabled.
11.10.2 Les commandes en lecture seule
L'attribut readonly spcifie si la commande peut tre modifie ou non par l'utilisateur.
Quand il est prsent, l'attribut readonly produit les effets suivants sur l'lment :
76
les lments en lecture seule reoivent le focus mais les utilisateurs ne peuvent pas les modifier ;
les lments en lecture seule sont inclus dans la navigation par tabulation ;
les lments en lecture seule peuvent russir.
get : avec la mthode HTTP "get", l'ensemble des donns de formulaire est rajout l'URI
spcifi par l'attribut action (avec un caractre point d'interrogation ? comme sparateur) et
ce nouvel URI est envoy l'agent de traitement ;
post : avec la mthode HTTP "post", l'ensemble des donns de formulaire est inclus dans le
corps de la requte HTTP et envoy l'agent de traitement.
On devrait employer la mthode "get" quand le formulaire est idempotent (i.e., ne produit aucun effet
secondaire). Nombre de recherches dans les bases de donnes n'ont pas d'effets secondaires visibles et
font des applications idales pour la mthode "get".
Si le service associ au traitement d'un formulaire entrane des effets secondaires (par exemple, si le
formulaire modifie une base de donnes ou l'abonnement un service), on devrait alors employer la
mthode "post".
Remarque : La mthode "get" restreint les valeurs du jeu des donnes du formulaire [ndt. form data set]
aux caractres ASCII. Seule la mthode "post" (avec l'attribut enctype="multipart/form-data") est
spcifie comme recouvrant le jeu de caractres [ISO10646] entier.
11.11.2 Les commandes russies
Une commande russie est valable pour une soumission. Toute les commandes russies ont leur nom
de commande accoupl leur valeur courante et font partie du jeu des donnes du formulaire qui est
soumis. Une commande russie doit tre dfinie dans un lment FORM et doit avoir un nom de
commande.
Cependant :
77
Si une commande n'a pas de valeur courante au moment de la soumission du formulaire, les agents
utilisateurs ne sont pas obligs de la traiter comme une commande russie.
Les commandes caches et les commandes qui ne sont pas restitues en raison de l'effet d'une feuille de
style peuvent quand mme russir. Par exemple :
<form action="..." method="post">
<p>
<input type="password" style="display:none"
name="mot_de_passe_invisible"
value="mon_mot_de_passe">
</form>
cela entranera malgr tout l'accouplement de la valeur au nom "mot_de_passe_invisible" et leur
soumission avec le formulaire.
11.11.3 Le traitement des donnes du formulaire
Quand l'utilisateur soumet le formulaire (par exemple, en activant un bouton de soumission), l'agent
utilisateur le traite de la manire suivante.
Premire tape : identifier les commandes russies
Deuxime tape : construire le jeu des donnes du formulaire
Le jeu des donnes du formulaire est la squence des couples nom de commande/valeur courante
construite partir des commandes russies.
Troisime tape : coder le jeu des donnes du formulaire
Le jeu des donnes du formulaire est alors cod en fonction du type de contenu spcifi par l'attribut
enctype de l'lment FORM.
Quatrime tape : soumettre le jeu des donnes du formulaire cod
Enfin, les donnes codes sont envoyes l'agent de traitement dsign par l'attribut action, en utilisant le
protocole spcifi par l'attribut method.
Cette spcification ne dfinit pas toutes les mthodes de soumissions valides ni les types de contenu qui
peuvent tre utiliss avec les formulaires. Cependant, les agents utilisateur HTML 4 doivent obir aux
conventions tablies dans les cas suivants s:
si la valeur de l'attribut method est "get" et la valeur de l'attribut action est un URI HTTP, alors
l'agent utilisateur prend la valeur de l'attribut action, lui rajoute un caractre ? et enfin le jeu
des donnes du formulaire, cod en utilisant le type de contenu "application/x-www-formurlencoded". L'agent utilisateur traverse alors le lien vers cet URI. Dans ce scnario, les donnes
du formulaire se limitent aux codes ASCII ;
si la valeur de l'attribut method est "post" et la valeur de l'attribut action est un URI HTTP, alors
l'agent utilisateur conduit une transaction HTTP "post" en utilisant la valeur de l'attribut action et
un message cr en fonction du type de contenu spcifi par l'attribut enctype.
Pour toute autre valeur de l'attribut action ou method, le comportement n'est pas spcifi.
Les agents utilisateurs devraient restituer les rponses des transactions HTTP "get" et "post".
11.11.4 Les types de contenu du formulaire
L'attribut enctype de l'lment FORM spcifie le type de contenu utilis pour coder le jeu des donnes du
formulaire en vue de sa soumission au serveur. Les agents utilisateurs doivent reconnatre les types de
contenu lists ci-dessous. Le comportement pour d'autres types de contenu n'est pas spcifi.
.
78
"application/x-www-form-urlencoded"
C'est le type de contenu par dfaut. Les formulaires soumis avec ce type de contenu doivent tre cods
commes suit :
1.
2.
Les noms de commandes et les valeurs sont chappes. Les caractres espace sont remplacs
par des caractres plus + puis les caractres rservs sont chapps comme dcrit dans le
document [RFC1738], section 2.2 : Les caractres non-alphanumriques sont remplacs par une
squence de la forme %HH , un caractre pourcentage et deux chiffres hexadcimaux qui
reprsentent le code ASCII du caractre en question. Les sauts de ligne sont reprsents par des
couples de caractres "CR LF" (i.e., "%0D%0A") ;
Les couples nom/valeur des commandes sont lists selon leur ordre d'apparition dans le
document. Le nom est spar de la valeur par un caractre gal = , et les couples nom/valeur
sont spars les uns des autres par des caractres esperluettes & .
"multipart/form-data"
Le type de contenu "application/x-www-form-urlencoded" est inefficace pour l'envoi de grandes
quantits de donnes binaires ou de texte contenant des caractres non-ASCII. C'est le type de contenu
"multipart/form-data" qui devrait tre utilis pour la soumission de formulaires contenant des fichiers, des
donnes non-ASCII et des donnes binaires.
Un message "multipart/form-data" contient une succession de parties, chacune d'elles reprsentant une
commande russie. Les parties sont envoyes l'agent de traitement dans le mme ordre selon lequel les
commandes correspondantes apparaissent dans le flux du document. Les bornes de ces parties ne
devraient pas survenir au milieu des donnes cette spcification ne dfinit pas la faon dont cela est fait.
Comme pour tous les types MIME en plusieurs parties, chaque partie possde en option un en-tte
Content-Type dont la valeur par dfaut est "text/plain". Les agents utilisateurs devraient produire l'entte Content-Type , accompagn d'un paramtre "charset".
Chaque partie est cense contenir :
1.
2.
Ainsi, par exemple, pour une commande nomme "macommande", la partie correspondante serait
spcifie par :
Content-Disposition: form-data; name="macommande"
Comme pour toutes les transmissions MIME, on utilise les caractres "CR LF" (i.e., "%0D%0A") pour
sparer les lignes de donnes.
Chaque partie peut tre code et l'en-tte Content-Transfer-Encoding peut tre fourni, si la valeur de
cette partie n'est pas conforme l'encodage par dfaut (7BIT) (voir le document [RFC2045], section 6)
Si le contenu d'un fichier est soumis avec un formulaire, l'entre du fichier devrait tre identifie par le
type de contenu adquat (par exemple, "application/octet-stream"). Si plusieurs fichiers doivent tre
retourns en rsultat d'une seule entre de formulaire, ils devraient tre retourns comme type
"multipart/mixed" imbriqu dans le "multipart/form-data".
L'agent utilisateur devrait essayer de fournir un nom de fichier pour chaque fichier soumis. Le nom du
fichier peut tre spcifi avec le paramtre "filename" dans un en-tte 'Content-Disposition: form-data'
ou, au cas o il y aurait plusieurs fichiers, dans un en-tte 'Content-Disposition: file' de la sous-partie. Si
le nom de fichier du systme d'exploitation du client n'est pas en US-ASCII, le nom de fichier pourrait
tre approxim ou cod en utilisant la mthode dcrite dans le document [RFC2045]. Cela est commode
pour les cas o, par exemple, les fichiers tlchargs vers le serveur pourraient contenir des rfrences les
uns vers les autres (par exemple, un fichier TeX et sa description de style auxilliaire ".sty").
L'exemple suivant illustre le codage "multipart/form-data". Supposons le formulaire suivant :
<form action="http://server.com/cgi/gestion"
enctype="multipart/form-data"
method="post">
<p>
79
12 Les scripts
Sommaire
1.
2.
80
3.
La conception des documents pour les agents utilisateurs qui ne grent pas les scripts
1. L'lment NOSCRIPT
2. La dissimulation des donnes de script aux agents utilisateurs
des scripts peuvent tre valus au chargement du document et modifier le contenu de celui-ci
dynamiquement ;
des scripts peuvent accompagner un formulaire et en traiter les entres au fur et mesure. Les
concepteurs peuvent remplir dynamiquement des parties du formulaire en fonction des valeurs
des autres champs. Ils peuvent aussi s'assurer que les donnes entres appartiennent un ventail
prdtermin de valeurs, que les champs soient cohrents les uns avec les autres, etc. ;
des scripts peuvent tre dclenchs par les vnements qui affectent le document, tels que le
chargement, le dchargement, l'attention d'un lment [ndt. element focus], le mouvement de la
souris, etc. ;
des scripts peuvent tre attachs aux commandes d'un formulaire (par exemple, les boutons) et
produire les lments d'une interface utilisateur graphique.
Il existe deux types de script que les auteurs peuvent attacher un document HTML :
ceux qui sont excuts une seule fois quand le document est charg par l'agent utilisateur. Les
scripts qui apparaissent l'intrieur d'un lment SCRIPT s'excutent quand le document est
charg. Pour les agents utilisateurs qui ne peuvent pas ou ne pourront pas grer les scripts,
l'auteur peut inclure un contenu de remplacement via l'lment NOSCRIPT ;
ceux qui sont excuts toutes les fois o un vnement particulier se produit. Ces scripts peuvent
tre assigns un certain nombre d'lments au moyen des attributs d'vnement intrinsque.
12.2 La conception des documents pour les agents utilisateurs qui grent les scripts
Les sections suivantes abordent les questions concernant les agents utilisateurs qui grent les scripts.
12.2.1 L'lment SCRIPT
L'lment SCRIPT installe un script dans le document. Cet lment peut apparatre un nombre
quelconque de fois dans les lments HEAD ou BODY d'un document HTML.
Le script peut tre dfini en contenu de l'lment SCRIPT ou dans un fichier externe. Si l'attribut src n'est
pas spcifi, alors l'agent utilisateur doit interprter le contenu de l'lment comme tant le script. Si
l'attribut src a une valeur d'URI, alors l'agent utilisateur doit ignorer le le contenu de l'lment et ramener
le script dsign par l'URI. Remarquez que l'attribut charset se rfre l'encodage de caractres du script
dsign par l'attribut src ; cela ne concerne pas le contenu de l'lment SCRIPT.
Les scripts sont valus par les moteurs de script, qui doivent tre connus de l'agent utilisateur.
La syntaxe des donnes du script dpend du langage de script.
12.2.2 La spcification du langage de script
Comme HTML ne dpend pas d'un langage de script particulier, les auteurs des documents doivent
indiquer explicitement aux agents utilisateurs le langage de chaque script. Cela peut tre fait soit au
travers d'une dclaration par dfaut, soit par une dclaration locale.
81
Les documents, qui ne spcifient pas de langage de script par dfaut et qui contiennent des lments
spcifiant un script d'vnement intrinsque, sont errons. Les agents utilisateurs peuvent toujours
essayer d'interprter les scripts spcifis incorrectement mais ils ne sont pas obligs de le faire. Les outils
d'dition devraient gnrer une indication de langage de script par dfaut pour aider les auteurs crer
des documents corrects.
La dclaration locale du langage de script
On doit spcifier l'attribut type pour chaque instance de l'lment SCRIPT dans le document. La valeur
de l'attribut type d'un lment SCRIPT surclasse le langage de script par dfaut de cet lment.
Dans cet exemple, nous dclarons le langage de script par dfaut comme tant "text/tcl". Nous incluons
dans l'en-tte du document un lment SCRIPT, dont le script en question est localis dans un fichier
externe, tel quel et crit dans le langage de script "text/vbscript". Nous incluons galement dans le corps
du document un lment SCRIPT, lequel contient son propre script crit dans le langage "text/javascript".
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Un document avec SCRIPT</title>
<meta http-equiv="Content-Script-Type" content="text/tcl">
<script type="text/vbscript" src="http://quelquepart.com/progs/vbcalc">
</script>
</head>
<body>
<script type="text/javascript">
...un code JavaScript...
</script>
</body>
</html>
L'appel des lments HTML partir d'un script
Chaque langage de script obit ses propres rgles pour appeler des objets HTML partir d'un script.
Cette spcification ne dfinit pas de mcanisme standard pour appeler les objets HTML.
Nanmoins, les scripts devraient se rfrer un lment en fonction du nom qui lui est assign. Les
moteurs de scripts devraient observer les rgles de prsance suivantes dans l'identification d'un lment :
l'attribut name est prioritaire sur l'attribut id, quand tous les deux sont spcifis. Sinon, on peut utiliser
l'un ou l'autre.
82
83
L'vnement onchange se produit quand une commande perd l'attention de saisie et quand sa
valeur a t modifie depuis l'instant o elle avait reu l'attention. Cet attribut s'applique aux
lments suivants : INPUT, SELECT et TEXTAREA.
Il est possible d'associer une action un certain nombre d'vnements, qui se produisent quand
l'utilisateur interagit avec l'agent utilisateur. Chacun des vnements intrinsques lists ci-dessus
prend comme valeur un script. Le script s'excute toutes les fois o l'vnement se produit pour cet
lment. La syntaxe des donnes de script dpend du langage de script.
Les lments de commande, savoir INPUT, SELECT, BUTTON, TEXTAREA et LABEL, rpondent
tous certains vnements intrinsques. Quand ces lments n'apparaissent pas dans un formulaire, on
peut les employer pour augmenter l'interface utilisateur graphique du document.
Par exemple, l'auteur peut vouloir inclure des boutons poussoirs dans son document, ceux-ci ne
soumettant pas de formulaire mais commnuniquant quand mme avec un serveur quand ils sont activs.
Les exemples suivants montrent quelques commandes et comportements d'interface utilisateur possibles
raliss partir d'vnements intrinsques.
Dans l'exemple suivant, la commande nomme "nomUtilisateur" est un champ obligatoire. Quand
l'utilisateur quitte le champ, l'vnement onblur appelle une fonction JavaScript qui confirme la validit
de "nomUtilisateur".
<input name="nomUtilisateur" onblur="verifNomUtilisateur(this.value)">
Voici un autre exemple en JavaScript :
<input name ="nombre"
onchange="if (!verifNombre(this.value, 1, 10))
{this.focus();this.select();} else {remercier()}"
VALUE="0">
Voici l'exemple en VBScript d'un gestionnaire d'vnement pour un champ textuel :
<input name="edit1" size="50">
<script type="text/vbscript">
Sub edit1_changed()
If edit1.value = "abc" Then
button1.enabled = True
Else
button1.enabled = False
End If
End Sub
</script>
Voici le mme exemple utilisant cette fois Tcl :
<input name="edit1" size="50">
<script type="text/tcl">
proc edit1_changed {} {
if {[edit value] == abc} {
button1 enable 1
} else {
button1 enable 0
}
}
edit1 onChange edit1_changed
</script>
Voici un exemple en JavaScript d'une relation d'vnement [ndt. event binding] l'intrieur d'un script.
Tout d'abord, voici un gestionnaire de clic simple :
<button type="button" name="mon_bouton" value="10">
<script type="text/javascript">
function mon_onclick() {
...
}
document.form.mybutton.onclick = mon_onclick
</script>
</button>
Voici un gestionnaire de fentre plus intressant :
<script type="text/javascript">
84
function mon_onload() {
...
}
var win = window.open("un/autre/URI")
if (win) win.onload = mon_onload
</script>
En Tcl, a donnerait :
<script type="text/tcl">
proc mon_onload {} {
...
}
set win [window open "un/autre/URI"]
if {$win != ""} {
$win onload mon_onload
}
</script>
12.2.4 La modification dynamique des documents
Les scripts qui s'excutent quand le document est charg sont capables de modifier dynamiquement le
contenu du document. Ces capacits sont fonction du langage de script en question (par exemple, la
dclaration "document.write" dans le modle objet de HTML reconnue par certains diteurs de logiciels).
On peut modliser la modification dynamique d'un document comme suit :
1.
2.
3.
Tous les lments SCRIPT sont valus dans l'ordre au fur et mesure du chargement du
document ;
Toutes les structures de script l'intrieur d'un lment SCRIPT donn, qui gnrent des valeurs
SGML de type CDATA, sont values. Leur texte gnr combin est insr dans le document
la place de l'lment SCRIPT ;
Les donnes gnres de type CDATA sont r-values.
Les documents HTML sont contraints de se conformer au DTD HTML avant comme aprs le traitement
de chaque lment SCRIPT.
L'exemple suivant illustre la manire dont les scripts peuvent modifier un document dynamiquement. Soit
le script suivant :
<title>Document de test</title>
<script type="text/javascript">
document.write("<p><b>Bonjour tout le monde !<\/b>")
</script>
celui-ci produit le mme effet que ce balisage HTML :
<title>Document de test</title>
<p><B>Bonjour tout le monde !</B>
12.3 La conception des documents pour les agents utilisateurs qui ne grent pas les scripts
Les sections suivantes expliquent comment les auteurs peuvent crer des documents qui fonctionnent
auprs des agents utilisateurs ne reconnaissant pas les scripts.
12.3.1 L'lment NOSCRIPT
L'lment NOSCRIPT permet aux auteurs de fournir un contenu de remplacement quand un script n'est
pas excut. Le contenu de l'lment NOSCRIPT ne devrait tre restitu par un agent utilisateur
reconnaissant les scripts que dans les cas suivants :
85
Les agents utilisateurs qui ne grent pas les scripts ct client doivent restituer le contenu de cet lment.
Dans l'exemple suivant, l'agent utilisateur qui interprte l'lment SCRIPT va inclure certaines donnes
cres dynamiquement dans le document. Si l'agent utilisateur ne reconnat pas les scripts, l'utilisateur
peut toujours obtenir les donnes au travers d'un lien.
<script type="text/tcl">
...un script Tcl qui insre des donnes...
</script>
<noscript>
<p>Accéder aux <a href="http://quelquepart.com/data">données.</a>
</ noscript >
12.3.2 La dissimulation des donnes de script aux agents utilisateurs
Les agents utilisateurs qui ne reconnaissent pas l'lment SCRIPT vont vraisemblablement restituer le
contenu de cet lment comme un texte. Certains moteurs de script, dont ceux des langages JavaScript,
VBScript et Tcl, autorisent la dlimitation des dclarations d'un script par un commentaire SGML. Les
agents utilisateurs, qui ne reconnaissent pas l'lment SCRIPT, ignoreront donc le commentaire c'est-dire tout ce qui est compris entre <!-- et -->alors que les moteurs de script intelligents comprendront que
le script dans le commentaire devrait tre excut.
Une autre solution ce problme, c'est de placer les scripts dans des documents externes et de les appeler
avec l'attribut src.
Commenter les scripts en JavaScript
Le moteur JavaScript autorise l'apparition de la chane <!-- au dbut de l'lment SCRIPT et ignore
les caractres suivants jusqu' la fin de la ligne. JavaScript interprte la chane // comme le dbut d'un
commentaire qui s'tend jusqu' la fin de la ligne courante. Elle est ncessaire pour dissimuler la chane
--> l'analyseur JavaScript.
<script type="text/javascript">
<!-- pour dissimuler le contenu du script aux navigateurs anciens
function square(i) {
document.write("L'appel a passé ", i ," à la fonction.","<br>")
return i * i
}
document.write("La fonction a renvoy& ",square(i),".")
// fin de la dissimulation du contenu aux navigateurs anciens -->
</script>
Commenter les scripts en VBScript
En VBScript, le caractre guillemet simple fait que le reste de la ligne courante est trait comme un
commentaire. On peut dont l'utiliser pour dissimuler la chane --> VBScript, par exemple :
<script type="text/vbscript">
<!-Sub foo()
...
End Sub
' -->
</script>
Commenter les scripts en TCL
En Tcl, le caractre dise # annonce le reste de la ligne comme un commentaire :
<script type="text/tcl">
<!-- pour dissimuler le contenu du script aux navigateurs anciens
proc square {i} {
document write "L'appel a passé $i à la fonction.<br>"
return [expr $i * $i]
}
document write "La fonction a renvoyé [square 5]."
# fin de la dissimulation du contenu aux navigateurs anciens -->
</script>
86
Balise
Balise
Vide Dc. DTD Description
ouvrante fermante
ancre
ABBR
ACRONYM
acronyme
ADDRESS
APPLET
AREA
applet Java
aire d'image cliquable ct client
BASE
BASEFONT
BDO
BIG
BLOCKQUOTE
citation longue
BODY
BR
O
I
corps du document
V
BUTTON
bouton poussoir
CAPTION
lgende de la table
CENTER
CITE
citation
CODE
fragment de code
COL
colonne de table
COLGROUP
DD
description de la dfinition
DEL
DFN
dfinition d'instance
DIR
DIV
DL
DT
EM
emphase
FIELDSET
FONT
FORM
FRAME
FRAMESET
sous-fentre
subdivision de fentre
H1
titrage
H2
titrage
H3
titrage
H4
titrage
H5
titrage
87
H6
HEAD
titrage
O
HR
HTML
O
I
en-tte du document
V
rgle horizontale
IFRAME
sous-fentre en-ligne
IMG
image incopore
INPUT
commande de formulaire
INS
texte insr
ISINDEX
KBD
LABEL
LEGEND
LI
LINK
item de liste
V
MAP
MENU
META
liste de menus
mtainformations gnriques
NOFRAMES
NOSCRIPT
OBJECT
OL
OPTGROUP
groupe d'options
OPTION
option slectionnable
paragraphe
PARAM
PRE
texte prformat
br citation en-ligne
SAMP
SCRIPT
dclarations de script
SELECT
slecteur d'option
SMALL
SPAN
STRIKE
texte barr
STRONG
forte emphase
STYLE
indication de style
SUB
SUP
TABLE
TBODY
corps de table
88
TD
TEXTAREA
TFOOT
pied de table
TH
THEAD
en-tte de table
TITLE
titre du document
TR
range de table
style de texte tlimprimeur ou chasse fixe
[ndt. monospaced]
TT
U
UL
liste non-ordonne
VAR
lments
concerns
TD, TH
accept-charset FORM
Valeur par
dfaut
Type
%Text;
#IMPLIED
abrviation pour
cellule
de
rubrique
%Charsets;
#IMPLIED
%ContentTypes; #IMPLIED
liste de types
MIME
pour
chargement d'un
fichier sur le
serveur
accept
FORM, INPUT
accesskey
A,
AREA,
BUTTON, INPUT,
LABEL,
%Character;
LEGEND,
TEXTAREA
#IMPLIED
touche
de
caractre
pour
l'accessibilit
action
FORM
%URI;
#REQUIRED
gestionnaire de
formulaire ct
serveur
align
CAPTION
%CAlign;
#IMPLIED
relativement la
table
align
APPLET,
IFRAME,
IMG, %IAlign;
INPUT, OBJECT
#IMPLIED
alignement
vertical
horizontal
align
LEGEND
%LAlign;
#IMPLIED
relativement au
jeu de champs
align
TABLE
%TAlign;
#IMPLIED
position de la
table relativement
la fentre
89
ou
align
HR
(left | center |
#IMPLIED
right)
align
alignement,
alignement
texte
align
COL,
COLGROUP,
(left | center |
TBODY,
TD, right | justify | #IMPLIED
TFOOT,
TH, char)
THEAD, TR
alink
BODY
%Color;
#IMPLIED
alt
APPLET
%Text;
#IMPLIED
brve description
alt
AREA, IMG
%Text;
#REQUIRED
brve description
alt
INPUT
CDATA
#IMPLIED
brve description
archive
APPLET
CDATA
#IMPLIED
archive
OBJECT
CDATA
#IMPLIED
liste
d'URI
spars par des
espaces
#IMPLIED
axis
TD, TH
CDATA
du
liste
d'archives
spares par des
virgules
background
BODY
%URI;
#IMPLIED
mosaque
de
textures
pour
l'arrire-plan du
document
bgcolor
TABLE
%Color;
#IMPLIED
bgcolor
TR
%Color;
#IMPLIED
bgcolor
TD, TH
%Color;
#IMPLIED
bgcolor
BODY
%Color;
#IMPLIED
border
TABLE
%Pixels;
#IMPLIED
border
IMG, OBJECT
%Pixels;
#IMPLIED
cellpadding
TABLE
%Length;
#IMPLIED
espacement
l'intrieur
cellules
cellspacing
TABLE
%Length;
#IMPLIED
espacement entre
les cellules
char
COL,
COLGROUP,
TBODY,
TD, %Character;
TFOOT,
TH,
THEAD, TR
#IMPLIED
caractre
d'alignement, e.g.
char=':'
90
paisseur
contour de
table
D
du
la
paisseur de la
bordure du lien
des
charoff
COL,
COLGROUP,
TBODY,
TD, %Length;
TFOOT,
TH,
THEAD, TR
#IMPLIED
dcalage
caractre
d'alignement
charset
#IMPLIED
encodage
de
caractres de la
ressource relie
checked
INPUT
(checked)
#IMPLIED
cite
BLOCKQUOTE,
Q
%URI;
#IMPLIED
URI du document
ou
message
sources
cite
DEL, INS
%URI;
#IMPLIED
informations sur
la
raison
du
changement
class
#IMPLIED
liste de classes
spares par des
espaces
classid
OBJECT
%URI;
#IMPLIED
identifie
une
implmentation
clear
BR
contrle
l'coulement
texte
code
APPLET
CDATA
fichier de classe
de l'applet
#IMPLIED
codebase
OBJECT
%URI;
#IMPLIED
codebase
APPLET
%URI;
#IMPLIED
codetype
OBJECT
%ContentType;
#IMPLIED
color
BASEFONT,
FONT
%Color;
#IMPLIED
cols
FRAMESET
%MultiLengths;
#IMPLIED
cols
TEXTAREA
NUMBER
#REQUIRED
colspan
TD, TH
NUMBER
compact
#IMPLIED
content
META
#REQUIRED
91
du
URI de
optionnel
l'applet
base
pour
type de contenu
de l'attribut code
D
couleur du texte
liste de longueurs,
par dfaut : 100%
(1 colonne)
nombre
de
colonnes
couvertes par la
cellule
CDATA
du
associes
coords
AREA
%Coords;
#IMPLIED
liste de longueurs
spares par des
virgules
coords
%Coords;
#IMPLIED
data
OBJECT
%URI;
#IMPLIED
rfrence
aux
donnes de l'objet
datetime
DEL, INS
%Datetime;
#IMPLIED
date et heure du
changement
declare
OBJECT
(declare)
#IMPLIED
dclare
mais
n'instancie pas le
drapeau
#IMPLIED
l'agent utilisateur
peut
diffrer
l'excution
du
script
defer
SCRIPT
(defer)
dir
#IMPLIED
direction du texte
faible/neutre
dir
BDO
#REQUIRED
directionnalit
disabled
BUTTON, INPUT,
OPTGROUP,
OPTION,
(disabled)
SELECT,
TEXTAREA
#IMPLIED
indisponible dans
ce contexte
enctype
FORM
%ContentType;
"application/xwwwformurlencoded"
face
BASEFONT,
FONT
CDATA
#IMPLIED
for
LABEL
IDREF
#IMPLIED
correspond la
valeur ID du
champs
frame
TABLE
%TFrame;
#IMPLIED
quelles parties du
contour restituer
frameborder
FRAME, IFRAME (1 | 0)
headers
TD, TH
IDREFS
#IMPLIED
height
IFRAME
%Length;
#IMPLIED
height
TD, TH
%Length;
#IMPLIED
height
IMG, OBJECT
%Length;
#IMPLIED
(ltr | rtl)
92
liste de noms de
police spars par
des virgules
bordures de cadre
ou non ?
liste des id des
cellules
de
rubrique
hauteur du cadre
hauteur
cellule
surclasser
de
la
la
hauteur
height
APPLET
%Length;
#REQUIRED
href
A, AREA, LINK
%URI;
#IMPLIED
URI
de
la
ressource relie
href
BASE
%URI;
#IMPLIED
hreflang
A, LINK
%LanguageCode; #IMPLIED
hspace
APPLET,
OBJECT
http-equiv
META
IMG,
hauteur initiale
code de langue
D
gouttire
horizontale
%Pixels;
#IMPLIED
NAME
#IMPLIED
nom de l'en-tte
de rponse HTTP
id
#IMPLIED
identifiant unique
au document
ismap
IMG, INPUT
(ismap)
#IMPLIED
label
OPTION
%Text;
#IMPLIED
label
OPTGROUP
%Text;
#REQUIRED
lang
language
SCRIPT
CDATA
#IMPLIED
nom de langage
de script prdfini
link
BODY
%Color;
#IMPLIED
code de langue
#IMPLIED
#IMPLIED
#IMPLIED
marges verticales
en pixels
marginwidth
#IMPLIED
marges
horizontales
pixels
en
maxlength
INPUT
#IMPLIED
nombre
de
longdesc
longdesc
IMG
%URI;
NUMBER
93
caractres maxi
pour les champs
de texte
media
STYLE
%MediaDesc;
#IMPLIED
media
LINK
%MediaDesc;
#IMPLIED
pour restitution
sur ces mdias
method
FORM
(GET | POST)
GET
mthode HTTP
utilise
pour
soumettre
le
formulaire
multiple
SELECT
(multiple)
#IMPLIED
slection simple
par dfaut
name
BUTTON,
TEXTAREA
CDATA
#IMPLIED
permet
aux
applets de se
trouver les uns les
autres
name
APPLET
CDATA
#IMPLIED
name
SELECT
CDATA
#IMPLIED
nom du champs
name
FORM
CDATA
#IMPLIED
nom
formulaire
les scripts
name
#IMPLIED
name
IMG
CDATA
#IMPLIED
nom de l'image
pour les scripts
name
CDATA
#IMPLIED
extrmit du lien
nomme
name
INPUT, OBJECT
CDATA
#IMPLIED
soumettre comme
partie
du
formulaire
name
MAP
CDATA
#REQUIRED
name
PARAM
CDATA
#REQUIRED
nom de proprit
name
META
NAME
#IMPLIED
nom
des
mtainformations
nohref
AREA
(nohref)
#IMPLIED
redimensionner le
cadre ?
nom du cadre
pour le ciblage
noresize
FRAME
(noresize)
#IMPLIED
noshade
HR
(noshade)
#IMPLIED
nowrap
TD, TH
(nowrap)
#IMPLIED
suppression de la
csure
object
APPLET
CDATA
#IMPLIED
fichier
d'applet
srialis
onblur
A,
AREA,
BUTTON, INPUT,
%Script;
LABEL, SELECT,
TEXTAREA
#IMPLIED
94
du
pour
l'lment a perdu
l'attention
onchange
INPUT, SELECT,
%Script;
TEXTAREA
#IMPLIED
la
valeur
l'lment
chang
onclick
#IMPLIED
le bouton d'un
pointeur a t
cliqu
ondblclick
#IMPLIED
le bouton d'un
pointeur a t
double cliqu
onfocus
A,
AREA,
BUTTON, INPUT,
%Script;
LABEL, SELECT,
TEXTAREA
#IMPLIED
l'lment a reu
l'attention
onkeydown
#IMPLIED
une touche
appuye
onkeypress
#IMPLIED
une touche a t
presse
puis
relche
onkeyup
#IMPLIED
une touche
relche
95
de
a
est
est
BASEFONT,
BDO, BR, FONT,
FRAME,
FRAMESET,
HEAD,
HTML,
IFRAME,
ISINDEX, META,
PARAM, SCRIPT,
STYLE, TITLE
FRAMESET
%Script;
#IMPLIED
onload
BODY
%Script;
#IMPLIED
le document a t
charg
#IMPLIED
le bouton d'un
pointeur a t
appuy
#IMPLIED
le bouton d'un
pointeur a t
dplac
l'intrieur
#IMPLIED
le bouton d'un
pointeur a t
dplac en dehors
#IMPLIED
le bouton d'un
pointeur a t
dplac sur
onmouseout
96
onload
ISINDEX, META,
PARAM, SCRIPT,
STYLE, TITLE
onmouseup
#IMPLIED
le bouton d'un
pointeur a t
relch
onreset
FORM
%Script;
#IMPLIED
le formulaire a t
rinitialis
onselect
INPUT,
TEXTAREA
%Script;
#IMPLIED
un texte a t
slectionn
onsubmit
FORM
%Script;
#IMPLIED
le formulaire a t
soumis
onunload
FRAMESET
%Script;
#IMPLIED
onunload
BODY
%Script;
#IMPLIED
le document a t
retir
profile
HEAD
%URI;
#IMPLIED
dictionnaire
de
mtainformations
nomm
prompt
ISINDEX
%Text;
#IMPLIED
readonly
TEXTAREA
(readonly)
#IMPLIED
readonly
INPUT
(readonly)
#IMPLIED
rel
A, LINK
%LinkTypes;
#IMPLIED
types de
progressif
lien
rev
A, LINK
%LinkTypes;
#IMPLIED
types de
rgressif
lien
rows
FRAMESET
%MultiLengths;
#IMPLIED
rows
TEXTAREA
NUMBER
#REQUIRED
rowspan
TD, TH
NUMBER
nombre
de
ranges couvertes
par la cellule
rules
TABLE
%TRules;
#IMPLIED
rgles
ranges
colonnes
scheme
META
CDATA
#IMPLIED
selectionner une
forme de contenu
scope
TD, TH
%Scope;
#IMPLIED
porte
cellules
rubrique
97
message d'invite
liste de longueurs,
par dfaut : 100%
(1 range)
entre
et
des
de
auto
selected
OPTION
(selected)
#IMPLIED
shape
AREA
%Shape;
rect
contrle
l'interprtation
des coordonnes
shape
%Shape;
rect
size
HR
%Pixels;
#IMPLIED
size
FONT
CDATA
#IMPLIED
size
INPUT
CDATA
#IMPLIED
size
BASEFONT
CDATA
#REQUIRED
size
SELECT
NUMBER
#IMPLIED
ranges visibles
les attributs de
l'lment
COL
affectent
"n"
colonnes
span
COL
NUMBER
barres
de
dfilement ou non
scrolling
[+|-]entier,
size="+1",
size="4"
e.g.
propre chaque
type de champs
D
taille de police de
base pour les
lments FONT
span
COLGROUP
NUMBER
nombre
de
colonnes
par
dfaut dans le
groupe
src
SCRIPT
%URI;
#IMPLIED
src
INPUT
%URI;
#IMPLIED
src
#IMPLIED
src
IMG
%URI;
#REQUIRED
URI de l'image
incorporer
standby
OBJECT
%Text;
#IMPLIED
message
montrer pendant
le chargement
start
OL
NUMBER
#IMPLIED
style
#IMPLIED
indications
de
style associes
summary
TABLE
#IMPLIED
objet/structure
pour sortie vocale
tabindex
A,
AREA,
NUMBER
BUTTON, INPUT,
#IMPLIED
position
l'ordre
%Text;
98
source du contenu
du cadre
numro
commenant
squence
la
dans
de
OBJECT,
SELECT,
TEXTAREA
tabulation
target
A, AREA, BASE,
%FrameTarget;
FORM, LINK
#IMPLIED
text
BODY
#IMPLIED
title
#IMPLIED
titre consultatif
type
A, LINK
%ContentType;
#IMPLIED
type de contenu
consultatif
type
OBJECT
%ContentType;
#IMPLIED
type de contenu
pour
l'attribut
data
%Color;
restituer dans ce
cadre
couleur du texte
du document
type
PARAM
%ContentType;
#IMPLIED
type de contenu
pour
l'attribut
value
quand
valuetype=ref
type
SCRIPT
%ContentType;
#REQUIRED
type de contenu
du langage de
script
type
STYLE
%ContentType;
#REQUIRED
type de contenu
du langage de
style
type
INPUT
%InputType;
TEXT
le genre de gadget
voulu
type
LI
%LIStyle;
#IMPLIED
style de l'item de
liste
type
OL
%OLStyle;
#IMPLIED
style
numrotation
type
UL
%ULStyle;
#IMPLIED
style de puce
type
BUTTON
(button | submit |
submit
reset)
utiliser
comme
bouton
de
formulaire
usemap
IMG,
OBJECT
%URI;
#IMPLIED
valign
COL,
COLGROUP,
(top | middle |
#IMPLIED
TBODY,
TD,
bottom | baseline)
TFOOT,
TH,
THEAD, TR
alignement
vertical dans les
cellules
value
INPUT
CDATA
#IMPLIED
value
OPTION
CDATA
#IMPLIED
par dfaut,
contenu
l'lment
le
de
value
PARAM
CDATA
#IMPLIED
valeur
de
INPUT,
99
de
proprit
envoy au serveur
la soumission
value
BUTTON
CDATA
#IMPLIED
value
LI
NUMBER
#IMPLIED
valuetype
PARAM
(DATA | REF |
DATA
OBJECT)
version
HTML
CDATA
%HTML.Version; D
une constante
vlink
BODY
%Color;
#IMPLIED
vspace
APPLET,
OBJECT
%Pixels;
#IMPLIED
gouttire verticale
width
HR
%Length;
#IMPLIED
width
IFRAME
%Length;
#IMPLIED
width
IMG, OBJECT
%Length;
#IMPLIED
surclasser
largeur
width
TABLE
%Length;
#IMPLIED
largeur de la table
width
TD, TH
%Length;
#IMPLIED
largeur
cellule
width
APPLET
%Length;
#REQUIRED
largeur initiale
width
COL
%MultiLength;
#IMPLIED
spcification de la
largeur
de
colonne
width
COLGROUP
%MultiLength;
#IMPLIED
width
PRE
NUMBER
#IMPLIED
IMG,
100
rinitialise
le
numro dans la
squence
comment
interprter
valeur
la
largeur du cadre
la
de
la
Prsentation de Javascript
Littraux et constantes
Objets et fonctions
Tableaux
Oprateurs, expressions et instructions
Accs aux lments de la page HTML partir d'un script
DOM (Document Object Model)
1 Prsentation de JavaScript
1.1 Qu'est ce que JavaScript ?
JavaScript est un langage de scripts. Il est donc d'un apprentissage simple et rapide et permet des
programmeurs dbutants de raliser leurs premires pages Web sous une forme particulirement
attrayante et fonctionnelle. Il existe une multitude de petits programmes JavaScript accessibles
gratuitement sur le Web et que l'on peut intgrer dans ses propres pages HTML. Par exemple aux
adresses http://www.editeurjavascript.com/ et http://www.dynamicdrive.com/ Un programme JavaScript
est intgr dans une page HTML tlcharge partir d'un serveur HTTP, puis il est excut sur le poste
client. Pour des raisons de scurit videntes, un tel programme ne peut donc ni lire, ni crire dans un
fichier du poste client.
Javascript est un langage dynamiquement typ (loosely typed), comme SmallTalk, les types sont lis aux
valeurs plutt qu'aux noms des variables. On ne peut pas dire par exemple que la variable x est de type
entier, mais qu'elle contient une valeur de type entier un instant donn. Les variables ne sont pas
dclares avec un type spcifique : une valeur de n'importe quel type peut leur tre attribue. L'indication
du type est mmoris au niveau des valeurs : chaque valeur est attach un champ de bits supplmentaire
indiquant son type.
Un programme Javascript est dcrit au sein de l'lment SCRIPT. Un script peut-tre plac dans l'en-tte
de la page HTML (dans l'lment HEAD) ou dans son corps (dans l'lment BODY). Dans l'exemple cidessus, le script est plac dans le corps de la page HTML et excut au moment o la page est tlcharge
dans le navigateur Web. La variable entier est dclare, mais non encore dfinie (elle n'a pas de
101
valeur, aucune zone mmoire ne lui a t alloue). Sa valeur est de type undefined. La variable i est
dclare, dfinie et initialise dans la mme instruction. Elle est de type entier. La variable accentu
n'est pas dclare, mais directement dfinie et initialise avec la valeur de i. La variable chane est de
type chane. Puisque les variables ne sont pas statiquement types, il n'existe pas d'identificateurs pour
dsigner les types. Tout comme Java, Javascript est sensible la casse et on peut utiliser les caractres
accentus dans les noms des variables. Il existe en Javascript un certain nombre d'"objets" prdfinis.
L'objet document reprsente le document HTML dans lequel est insr le script. Comme en Java, on
peut envoyer un message un objet pour lui demander de rendre un service. Lorsque l'interprte
Javascript (contenu dans le navigateur Web) interprte la ligne document.write(i); il affiche la
valeur de i dans la page Web. La chane passe en argument write peut tre du code HTML qui sera
interprt de la mme faon que si ce code HTML tait crit en dehors de l'lment <script>. C'est le cas
pour l'instruction document.write("<br>"); qui permet de sauter une ligne dans la page Web.
A quoi sert le mot-cl var ? C'est essentiellement un indicateur de visibilit. Une variable dclare avec
le mot-cl var n'est utilisable que dans le bloc o elle est dclare
Dans l'exemple ci-dessus, x est une variable locale la fonction toto alors que y est une variable
globale (oui, comme dans les vieux langages non structurs, on peut dfinir une variable globale au plus
profond d'une fonction !!!! bonjour les effets de bords). La demande de lecture de la valeur de x en
dehors de la fonction toto provoque une erreur d'interprtation.
1.2 Les diverses formes de JavaScript
Javascript est une marque dpose par Netscape depuis 1997. La version Microsoft de Javascript, utilise
par le navigateur Internet Explorer, s'apelle JScript.
Les problmes d'incompatibilit obligent le programmeur tester le type de navigateur utilis par le
client, sa version, la plate-forme qui le supporte (Windows -16 ou 32-, Mac OS, Unix,...) et bien d'autres
choses encore, afin d'adapter le script qu'il dveloppe tous les cas de figures envisageables s'il veut que
son document puisse tre accessible le plus largement possible.
Un script dont l'ide de base se veut simple peut donc devenir "une usine gaz" si l'on doit tenter de
prendre en compte toutes les alternatives possibles. Dans ces conditions, le premier besoin du
programmeur est de tester l'ensemble de son script dans les diffrentes situations. Malheureusement, les
outils de debugging JavaScript sont rudimentaires, essentiellement en raison du typage dynamique qui ne
102
permet pas de contrler si les variables sont utilises correctement. Pour dtecter les erreurs d'excution
d'un programme JavaScript :
dans un navigateur Mozilla, on peut utiliser la Console JavaScript (menu Outils). Contrairement
aux compilateurs qui peuvent dtecter en une seule passe plusieurs erreurs, l'interprte
JavaScript s'interrompt la premire erreur !!!
utiliser
une
extension
de
navigateur
comme
FireBug
pour
https://addons.mozilla.org/fr/firefox/addon/1843
utiliser un dbogueur intgr dans un IDE (NetBeans partir de la version 6.5)
FireFox :
103
Rappelons que les caractres spciaux (guillemets, lettres accentues, chevrons) figurant l'intrieur
d'une chane sont cods par une suite de caractres compris entre & et ; Par exemple < est cod par <
lt signifie less than)
Un script peut galement tre situ dans un lment autre que <script>. Dans ce cas, le source JavaScript
est une chane de caractres qui est la valeur d'un attribut reprsentant un vnement mis par l'lment
HTML. La liste des vnements HTML et des lments pouvant les mettre, la suite d'une action de
l'utilisateur ou d'un changement de l'environnement, se trouve dans la partie HTML de ce document
(12.2.3). Voici un exemple d'lment <h1> qui met un vnement onclick quand on clique dessus. Le
gestionnaire d'vnement est un appel la fonction prdfinie alert qui affiche une fentre popup :
On peut aussi excuter une suite d'instructions JavaScript en mode interactif en tapant
javascript:<instructions> dans la barre d'adresse du navigateur (ne pas oublier les deux points
aprs javascript !!)
104
Au lieu de placer les instructions JavaScript directement dans un lment <script>, on peut utiliser
l'attribut src de l'lment <script> dont la valeur sera l'URL d'un fichier JavaScript. Cette approche est
utile :
Lorsque plusieurs pages d'un site utilisent des scripts identiques, au lieu de dupliquer ceux-ci
dans chacun des documents HTML, il est plus judicieux de regrouper toutes les scripts communs
dans un seul fichier et de prciser dans chacun des documents HTML le nom du fichier dont il
s'agit. Cela rduit l'espace disque serveur ncessaire pour stocker les fichiers HTML et rend
toute modification plus simple et plus sre ;
Pour ce qui est du temps de chargement des parties communes, il n'interviendra que lors de la
premire utilisation puisqu' partir de cet instant, l'ensemble sera sauvegard dans le cache du
navigateur.
Le fichier contenant le source JavaScript peut aussi provenir de n'importe quel serveur HTTP,
diffrent de celui qui a fourni la page HTML.
Les fichiers peuvent tre de deux sortes. D'une part ceux qui contiennent du source JavaScript pur (sans
HTML). Le fichier sera postfix par l'extension .js et il sera inclus par : <script src="path/nom de
fichier.js"></script>. D'autre part les fichiers-archives ayant une extension .jar (Java archive) et contenant
plusieurs fichiers du type de ceux que l'on vient de voir, mais compresss. La rfrence ces fichiers se
fera par : <script archive="../../Archives_JS/CoursJS.jar" src="Sces_Chap1.js"></script>. L'archive est
place dans le cache du navigateur lors du tlchargement de la premire page qui l'utilise, puis chaque
script rfrenc par l'attribut src est extrait de l'archive galement la premire utilisation.
1.5 L'emplacement d'un script dans une page HTML a-t-il une importance?
Il est possible d'utiliser un identificateur (une fonction ou une variable) un endroit de la page HTML
alors qu'il est dfini dans un script plac plus loin dans la page. En fait, au moment du chargement, tout le
code Javascript est analys quel que soit son emplacement dans la page. Si bien qu'en n'importe quel lieu
de la page, on peut rfrencer toute variable pourvu qu'elle soit dfinie au plus haut niveau et donc qu'elle
soit visible. Les scripts peuvent tre placs n'importe o dans la page HTML. Les rfrences en avant
seront bien traites : on peut utiliser une fonction g l'intrieur d'une fonction f et la fonction g tre
dcrite aprs la fonction f. Tous les lments <script> d'une mme page constituent un seul et mme
programme JavaScript.
105
2 Littraux et constantes
2.1 Identificateurs
Rappelons que JavaScript est sensible la casse. Il ignore tout caractre d'espacement (blanc, tabulation,
retour la ligne, etc.) apparaissant entre les entits lexicales. Ainsi, pour une meilleure lisibilit du source
vous pouvez insrer des blancs par exemple, de part et d'autre d'oprateurs, indenter des portions
constituant des blocs ou couper une ligne trop longue. Par contre une entit lexicale ne peut en aucun cas
contenir un caractre d'espacement sous peine de la transformer en deux entits lexicales et donc,
vraisemblablement de voir apparatre une erreur d'interprtation. Les identificateurs servent nommer
des variables ou des fonctions. La syntaxe d'un identificateur impose en premire place un caractre
alphabtique (majuscule ou minuscule, accentu ou non) ou $ (dollar) ou _ (soulign). Les caractres
suivants peuvent tre n'importe quelle combinaison de ces mmes caractres plus des chiffres.
2.2 Littraux
Les littraux peuvent tre de type numrique (entiers ou rels), de type chanes de caractres ou de type
boolen. Ces trois types correspondent aux types primitifs de JavaScript
De faon gnrale, les littraux numriques sont crits en dcimal. Le langage accepte nanmoins des
littraux entiers en reprsentation octale ou hexadcimale. Les premiers, dont les chiffres sont compris
entre 0 et 7, ont pour caractristique de dbuter par le chiffre "0". Les seconds dbutent par les caractres
"0x" et ont pour chiffres n'importe quel chiffre entre 0 et 9 ainsi que les lettres A, B, C, D, E ou F
(majuscules ou minuscules).
Les rels peuvent avoir une reprsentation en virgule fixe (du type 3.14159) ou en virgule flottante (du
type 0.314 E+1 ou encore .314 e+1). Dans tous les cas, la marque dcimale est le point et non la virgule,
quant au signe d'exponentiation, il peut tre indiffremment en majuscule ou minuscule.
Les chanes littrales sont encadres par des quotes simples ( ' ) ou doubles ( " ). Si l'intrieur d'une
chane encadre par un de ces caractres, ce mme caractre doit apparatre, il sera prcd du caractre
"antislash" ( \ ).
Les littraux peuvent avoir des formes plus complexes que pour les types primitifs que nous venons de
voir. C'est le cas des "initialisateurs" de tableaux ou d'objets que nous verrons plus loin.
106
2.3 Commentaires
Comme en Java, on utilise // pour mettre en commentaire tout ce qui suit sur la mme ligne et /* */ pour
commenter un bloc.
2.4 Caractres spciaux
JavaScript autorise la reprsentation de caractres particuliers l'intrieur d'une chane de caractres.
Pour pouvoir obtenir ces reprsentations, on utilise le caractre backslash (\) suivi d'un autre caractre.
Nous avons vu que JavaScript dispose de deux caractres diffrents pour limiter les chanes, ce qui est
bien agrable lorsque la chane elle-mme ncessite l'utilisation d'un de ces caractres, comme par
exemple dans "L'apprentissage de JavaScript est ais", ou encore ' Le professeur a dit : "tudiez
srieusement !" '. Mais nous rencontrerons de nombreuses situations o cela ne suffira plus. Dans ce cas,
nous pourrons utiliser les caractres \' ou \" pour signifier l'occurrence d'une simple apostrophe ou de
guillemets comme dans : "Le professeur a dit : \"L\'apprentissage de JavaScript est ais !\" ".
Voici la liste de ces caractres spciaux ainsi que leur signification :
Squence Caractre reprsent
\b
\n
\f
\t
\r
\\
\'
\"
\
\x
\u
Il est noter que pour tout caractre autre que ceux indiqus ci-dessus, le fait qu'il apparaisse prcd
d'un backslash ne change absolument rien. Le backslash est ignor et le caractre apparat normalement.
Pour connatre l'unicode d'un caractre spcial, on peut utiliser l'utilitaire charmap de Windows :
L'utilisation des unicodes dans les navigateurs rcents est prfrable au codage HTML du type
=é On crira S = "Le d\u00EEner sera pr\u00EAt \u00E0 l'heure " ; au
lieu de S = "Le dîner sera pr&ecirc;t &agrave; l'heure ";
Il faut signaler pour terminer que les navigateurs rcents acceptent les caractres accentus (bien que les
normes HTML indiquent que les caractres doivent tre cods en ASCII sur 7 bits, c'est une nouvelle
preuve que les techniques disponibles sont en avance sur les normes). On peut donc crire directement
document.write("Le dner sera prvu l'heure"); quand on dite son code HTML.
Cependant,on n'est pas assur que le texte s'affichera correctement dans tous les navigateurs. De
mme, si on utilise des caractres accentus dans le source des scripts, on n'est pas assur que celuici sera accept par d'anciennes versions de l'interprte JavaScript.
2.5 Littraux et valeurs boolennes
Il existe deux littraux boolens : true et false. Compte tenu du typage dynamique, certaines valeurs
numriques ou de type chane peuvent tre converties en boolens. Le nombre 0 est converti en false.
Toutes les autres valeurs numriques sont converties en true. De mme, toutes les chanes de caractres
sont converties en true.
107
108
3 Objets et Fonctions
3.1 JavaScript n'est pas un langage orient objet
Un objet JavaScript ressemble une structure " la C" contenant des valeurs nommes (des proprits).
Ces valeurs peuvent tre d'un type primitif nombre, chane ou boolen, un type objet ouune fonction.
En effet, JavaScript est un langage fonctionnel, c'est--dire un langage dans lequel les fonctions sont
des "citoyens de premire espce". Cela signifie qu'une fonction peut tre vue comme une donne. Ainsi,
on peut passer une fonction en argument une autre fonction et une fonction peut retourner une fonction.
Une fonction dont un des paramtres est une fonction ou qui renvoie une fonction est appele une
fonctionnelle (comme en LISP). Un objet n'est donc pas une structure " la C", dont les champs sont fixs
une bonne fois pour toutes la compilation, mais plutt une liste de proprits attache un symbole.
Comme en LISP, on peut ajouter ou supprimer une proprit un objet en cours d'excution du
programme.
Comme en Java, un objet est une donne alloue dynamiquement en mmoire avec l'oprateur new.
Voici un exemple de cration d'une instance de la classe prdfinie Object, laquelle on ajoute
dynamiquement des proprits. La valeur de la proprit c de l'objet monObjet est la fonction
prdfinie alert. L'oprateur delete supprime la proprit c de l'objet monObjet.
Le fait que JavaScript soit un langage fonctionnel peut paratre anecdotique, mais c'est fondamental, car
cela permet de dfinir implicitement des pointeurs sur fonctions et ainsi des fonctions de type callback.
Cette possibilit est la base de la technologie rcente AJAX (http://www128.ibm.com/developerworks/library/j-ajax1/?ca=dgr-lnxw01Ajax). Une mthode en JavaScript est donc
une fonction qui est la valeur d'une proprit d'une certaine classe. Mais on peut aussi dfinir et utiliser
des fonctions en dehors de toute classe, comme on le fait en langage C++.
109
Comme en Java, une variable dont le type est un objet est en fait un pointeur, comme le montre
clairement l'exemple suivant dans lequel monObjet et tonObjet pointent vers la mme zone mmoire.
JavaScript utilise donc les concepts d'instance et de "classe", ainsi que d'envoi de message. Cependant,
JavaScript ne dfinit ni la notion d'hritage entre classes, ni la notion de polymorphisme, ni la
notion d'encapsulation, ce n'est donc absolument pas un langage orient objet, mais tout au plus un
langage bas objet (object based), comme disent certains auteurs amricains.
Pour embrouiller encore plus les ides, de nombreux auteurs appellent les "classes" des Objets !!!! Il
existe un certains nombre de "classes" prdfinies dans JavaScript (pour une liste complte, consultez
http://www.devguru.com/technologies/javascript/home.asp)
3.2 Construction d'un objet
Si on veut crer plusieurs objets ayant les mmes proprits, mais avec des valeurs diffrentes, on dfinit
une fonction constructeur, qui est une fonction comme une autre. La pseudo variable this est utilise
l'intrieur du constructeur pour dsigner l'objet que l'on est en train de construire. Il n'y a donc pas de
dfinition de classe comme en Java, on dfinit un constructeur qui est ensuite appel avec l'oprateur new
pour dfinir une nouvelle instance. Une mthode est dfinie comme une proprit ordinaire, dont la
valeur est une fonction. Pour crer une fonction, on utilise le mot cl function. Dans l'exemple suivant
on dfinit une "classe" Personne avec deux proprits de type chane, une proprit numrique et une
proprit fonctionnelle, nomme afficheToi, qui est l'unique mthode de cette classe. Puis on cr
deux instances de cette classe et on envoie un message chacune d'elles avec le slecteur
afficheToi(). Enfin, nous avons retenu que le typage est dynamique. Rien n'interdit donc d'affecter la
valeur 0 la proprit afficheToi qui devient de type numrique et la classe Personne n'a plus
aucune mthode. Le message toi.afficheToi() provoque donc une erreur. L'interprte indique que
la valeur de toi.afficheToi n'est pas une fonction. Vous commencez comprendre pourquoi
JavaScript est rput tre un langage difficile dboguer
110
Nouveaut par rapport Java : les fonctions peuvent elles aussi tre vues comme des objets, instances de
la classe Function. On peut passer au constructeur Function un nombre quelconque d'arguments de
type chane. Tous les arguments reprsentent les paramtres formels de la fonction, sauf le dernier qui
reprsente le corps de la fonction, qui peut contenir un nombre quelconque d'instructions JavaScript,
spares par des point-virgule. On peut ainsi crer dynamiquement des fonctions, en assemblant des
morceaux de code source :
111
112
4 Tableaux
4.1 Les tableaux sont des objets
Les tableaux sont des instances de la classe Array, qui ressemble beaucoup la collection ArrayList
de Java. Les lments d'un tableau peuvent tre de types distincts. Tout tableau est en ralit une liste de
pointeurs. On peut donc ajouter, supprimer des lments d'un tableau en cours d'excution. La contrepartie de cette souplesse est evidemment une perte d'efficacit par rapport aux "vrais" tableaux, implants
en mmoire sous forme d'lments tous de mme taille et contigus.
Les mthodes push et pop de la classe Array permettent de grer un tableau comme une pile, le
sommet de la pile tant le dernier lment du tableau.
Les tableaux acceptent galement des index symboliques, ils ressemblent alors plus aux collections de
type Map de Java. Les dpassements de tableau ne provoquent pas d'erreur d'interprtation comme le
montre l'exemple suivant :
113
114
L'instruction switch est plus puissante que celle de Java. Le test et les valeurs des diffrents cas peuvent
tre des chanes et mme une expression quelconque :
L'instruction with(<nom d'une classe>) est une sorte d'import la Java localement un bloc. Elle permet
d'utiliser les proprits et les mthodes d'une classe sans avoir rpter le nom de la classe en prfixe.
Il existe une instruction for de type "foreach" qui ressemble celle qu'on trouve en Java (>=1.5). Cela
permet de parcourir un tableau avec un indice mais sans prciser les bornes :
115
Window et Document sont deux classes prdfinies de JavaScript. Lorsque le navigateur affiche une
page dans une fentre, il cr une instance de Window nomme window (avec une minuscule). La
classe Window possde une proprit nomme document dont la valeur est une instance de la classe
Document et qui reprsente la page HTML. La classe Document possde une proprit nomme
forms qui est un tableau d'objets de la classe Form. Ceux-ci reprsentent les formulaires contenus dans
le corps de la page (lment <form>). Les formulaires sont numrots partir de 0 en commenant par le
formulaire le plus haut dans la page. La classe Form possde une proprit nomme elements qui est
un tableau d'objets de la classe Object. Ceux-ci reprsentent les lments du formulaire (boutons,
botes cocher, etc). La classe Document possde galement une proprit nomme images qui est un
tableau d'objets de la classe Image, qui reprsentent les images contenus dans la page (lment <img>).
Par exemple document.forms[0].elements[0] dsigne le premier lment apparaissant dans le
premier formulaire du document HTML
DHTML (Dynamic HTML) dsigne la possibilit de modifier le contenu et mme la structure d'une page
HTML aprs son chargement sur le poste client grce un script. DHTML est apparu avec les versions 4
des navigateurs Web et l'utilisation conjointe de trois technologies :
DHTML = HTML + CSS + JavaScript
Dans l'exemple suivant, on dfinit deux styles dans l'en-tte de la page. Le style un est affect un
lment <h1> grce son attribut class. Puis un script attach cet lment permet de changer son
style la suite d'un clic grce son attribut className dont la valeur est le nom du style de l'lment
(on ne peut pas utiliser directement l'attribut class pour changer le style, on se demande pourquoi)
116
117