Beruflich Dokumente
Kultur Dokumente
par Serge P.
Cet article est une introduction au langage Javascript. Il est destin ceux et celles qui souhaitent dcouvrir ce langage qui permet de dynamiser les pages Web. Nanmoins, de bonnes bases en HTML et CSS sont ncessaires pour aborder sereinement le Javascript.
I - Prsentation du langage Javascript et des navigateurs I-A - Javascript I-B - Navigateurs I-C - Limites du Javascript II - Syntaxe II-A - Instructions - Conditions - Boucles II-B - Scripts dans l'entte du fichier HTML II-C - Scripts externes II-D - Commentaires II-E - Objets internes II-F - Accolades II-G - Variables III - Evnements IV - Utiliser les objets du navigateur IV-A - L'objet window IV-B - L'objet window.navigator IV-C - L'objet window.document V - Manipuler la page - Les grandes lignes du DOM V-A - Reprsentation de la page V-A-1 - Proprits des n#uds V-A-1-a - Proprits V-A-1-b - Remarques sur innerHTML et nodeValue V-A-2 - Exemples d'arbres DOM sous divers navigateurs V-A-2-a - Arborescence selon Firefox v1 V-A-2-b - Arborescence selon Firefox v2 V-A-2-c - Arborescence selon Internet Explorer v5 V-B - Cration, insertion, suppression d'un n#ud V-B-1 - Mthodes Javascript pour la gestion des n#uds V-B-2 - Exemple V-B-2-a - Arborescence du document V-B-2-b - Cration des lments V-B-2-c - Insertion des objets dans le document V-C - Ajax VI - Conclusion - Liens divers - Remerciements VI-A - Conclusion VI-B - Liens VI-C - Remerciements
-2Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
I-A - Javascript
Javascript est un langage interprt par le navigateur. Le Javascript est un langage client c'est dire excut chez l'utilisateur lorsque la page Web est charge. Il a pour but de dynamiser les sites Internet. Javascript est ne pas confondre avec Java ! Qu'est-ce que le Javascript ? A quoi sert le Javascript ? JAVA ou Javascript ? Le Javascript est un langage sensible la casse ( case sensitive ). Javascript est un langage objet : chaque objet possde des mthodes (ou fonctions), des proprits et .... des objets. Dans une page web, l'objet le plus lev dans la hirarchie est la fentre du navigateur window. Cet objet window contient entre autres l'objet document qui lui mme contient tous les objets contenus dans la page web (paragraphes, formulaires, etc...). En plus de ces objets, il existe des objets crs par l'utilisateur.
Les mthodes sont des fonctions qui permettent d'agir sur certaines proprits de l'objet, les proprits contiennent les paramtres d'un objet. des proprits : la couleur, la marque, le numro d'immatriculation ; des mthodes : tourner(), avancer(), reculer(), changer la couleur() ; des objets : les phares, les pneus.
Pour rsumer une mthode engendre une action, un verbe qualifie cette action, une proprit est gnralement qualifie par un nom. Dans l'exemple de la voiture une mthode permet de changer la couleur de la voiture, par contre aucune mthode ne nous autorise changer la marque de cette voiture (ce qui entranerait une modification des autres proprits et ventuellement l'apparition ou la disparition de mthodes). Il en sera ainsi galement avec nos objets Javascript : nous pourrons accder voire modifier les proprits (couleur du texte, style de la fonte) des objets grce aux mthodes. Voici une liste non exhaustive des navigateurs :
I-B - Navigateurs
Linux / UNIX Firefox, Netscape, Mozilla, Konqueror, Lynx, Opra Windows MacOS Internet Explorer, Firefox, Netscape, Internet Explorer, Konqueror, Opra, Opra Safari
-3Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
Lynx est un navigateur qui n'interprte pas le Javascript. Tout irait pour le mieux si ces navigateurs utilisaient pour un mme objet, les mmes proprits et les mmes mthodes pour les dfinir. Ce qui est loin d'tre le cas. Par ailleurs, Internet Explorer interprte galement le JScript, un Javascript cr par Microsoft (ActiveX). Nous n'aborderons pas ce langage spcifique IE.
-4Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
Les conditions
if (var1==var2) { ............... } else { ............... }
galit : == (cette syntaxe est galement utilise pour comparer deux chanes de caractres) diffrent : != (mme remarque que ci-dessus) infrieur ou gal : =< suprieur ou gal : >= infrieur : < suprieur : > et logique : && ou logique : || identique : === non identique : !== et bit bit : & ou bit bit : |
-5Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
Tout script est encadr des balises <script> </script>, on prcise galement le type MIME grce l'attribut type : Script dans l'entte du fichier HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> </title> <script type="text/javascript"> <!-//--> </script> </head> <body> </body> </html>
Les commentaires restent prsents pour une raison historique : les premiers navigateurs n'interprtant pas le Javascript et pour viter un affichage du texte dans la page web, les scripts taient encadrs de commentaires. Ne pas confondre les commentaires HTML et les commentaires Javascript. Commentaire HTML
<!-- Ceci est un commentaire HTML -->
Commentaire Javascript
/* Ceci est un commentaire Javascript */
Ces balises script sont gnralement insres dans le head de la page, ou entre les balises body. Dans ce dernier cas les scripts sont excuts au fur et mesure du chargement de la page. Il est possible d'insrer du code Javascript dans les balises HTML. Cependant, il faut que le code insr soif bref pour des questions de lisibilit (dans le cas des vnements).
II-D - Commentaires
-6Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
Il existe les commentaires multilignes : ils commencent par /* et se terminent par */ Commentaire Javascript
/* un commentaire sur plusieurs lignes */
et des commentaires sur une ligne : ils dbutent par // Commentaire Javascript
// un commentaire une ligne
Il semblerait que la prsence des accents et des apostrophes dans ces commentaires contribuerait une mauvaise interprtation des scripts. Cette source d'erreurs peut-tre leve en prcisant le charset du fichier Javascript. Les DOCTYPE en HTML
L'accs une mthode ou une proprit d'un objet se fait en plaant un point entre le nom de l'objet et la proprit ou la mthode.
var monObjet = document.getElementById("idObjet"); monObjet.style.display = "none";
ou
document.getElementById("idObjet").style.display = "none";
Le langage Javascript est un langage case sensitive : les variables, les mthodes, les attributs, les mots-clefs, etc.. ont une syntaxe trs prcise. Le non-respect de cette rgle peu conduire une mauvaise excution des scripts.
II-F - Accolades
Plusieurs coles : les accolades ouvrantes sont places sur la mme ligne que la condition ou la boucle, ou un retour la ligne est effectu pour l'accolade ouvrante. Accolades ouvrantes en fin de ligne
function maFonction() { if (test1) { .................
-7Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
On prconisera la seconde syntaxe la premire dans la mesure o elle offre une meilleure lisibilit dans le code.
II-G - Variables
En Javascript les variables ne sont pas types. Il faut nanmoins les dclarer grce au mot clef var. Une variable peut, au cours du programme, tre tour tour un entier, une chane de caractres, ou un boolen. Mme si cette possibilit de programmation est offerte, il ne faut surtout pas s'y laisser tenter. Une variable doit garder le mme type du dbut la fin. Et donc ne pas hsiter crer autant de variables que ncessaire. A ne pas faire
var i = i = i = i; //dclaration 2; //entier "bonjour"; //chane de caractres true; //boolen
du genre : truc, machin, toto, bidule... ; kilomtriques : ceciEstLeNomDeMaJolieVariable ; avec des accents : maChaneDeCaractres.
Les variables ne doivent pas tre des mots-clefs Javascript : var, form, int, document, etc..
-8Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
III - Evnements
Tous les vnements commencent par on : onclick, onload, onmouseout, onmouseover.... Ils peuvent tre insrs dans les balises HTML du document. Il est vivement conseill de les crire en minuscules. Syntaxe des vnements
<body onload="maFonction()"> <input type="button" onclick="maFonction()">
Pseudo-URL : Les pseudos-URL sont insres dans les balises de lien avec la syntaxe suivante : Pseudo-URL
<a href="javascript:alert('Coucou !!')">Mon Lien</a>
et ce pour faire la distinction avec un lien vers une autre page : URL
<a href="maPage.htm">Mon Lien</a>
Exemples d'vnements : Testez sur srie d'vnements sur des objets de votre navigateur Evnement onload onunload onbeforeunload onclick ondblclick onmousedown onmouseup onmousemove onkeydown onkeyup onkeypressed onblur Survient Commentaires aprs le chargement de la page lors de la fermeture de la page juste avant la fermeture de la fentre lors d'un clic l'vnement survient lors d'un clic sur le bouton gauche lors d'un double-clic double-clic sur le bouton gauche quand on enfonce le bouton de la cet vnement survient sur un clic souris gauche ou un clic droit quand on relche le bouton de la cet vnement survient sur un clic souris gauche ou un clic droit lorsque la souris se dplace dans un objet du document quand on enfonce une touche du clavier quand on relche la touche quand on enfonce une touche du Firefox et IE5 sous Windows : clavier quivalent onkeydown() quand l'lment perd le focus IE5 sous Windows : l'vnement survient lorsque l'lment perd le focus. Firefox sous Windows : l'vnement survient juste avant que l'lment ne perde le focus. Cas de l'input de type file <input
onfocus
-9Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
Evnement
Survient
Commentaires type="file" />. IE5 sous Windows : l'vnement se produit lors du clic dans la bote de texte ou aprs avoir cliqu sur Ok ou Annuler de la bote de dialogue Choisir fichier . Pas d'vnement lors du clic sur le bouton Parcourir . Firefox sous Windows : l'vnement se produit uniquement lors du clic sur le bouton Parcourir .
quand l'lment perd le focus et que son contenu a chang juste avant l'envoi d'un formulaire lors de la rinitialisation du formulaire quand le contenu d'un lment est Firefox sous Windows : onselect slectionn n'est valide que pour les input de type texte (text, password, file et textarea). Le nombre d'appels cet vnement va dpendre de la manire dont est fait la slection (clavier, double-clic...) et du navigateur. On ne peut pas donc se fier cette indication pour dterminer le nombre de caractres ou de mots slectionns. Firefox sous Windows : l'vnement onscroll ne fonctionne pas sur les balises textarea. Cet vnement ne fonctionne que sous Internet Explorer. Cet vnement ne fonctionne que sous Internet Explorer.
onscroll
lors de l'utilisation de la barre de dfilement avant l'impression (aprs le clic sur le bouton Ok de la fentre d'impression) aprs l'impression
onbeforeprint
onafterprint
Il arrive souvent que l'un des arguments de la fonction appele lors d'un vnement soit l'objet event (gestionnaire des vnements). Le cas le plus classique est lorsque l'on veut connatre la position de la souris. Avec Internet Explorer, l'objet event est contenu dans l'objet window : window.event. Avec Firefox ou Netscape l'objet event est gnr lors d'un vnement (onclick par exemple) la seule condition que celui-ci soit inclus dans la balise HTML. Par consquent, pour rcuprer l'vnement produit, il faut que l'objet event soit un paramtre de la fonction.
- 10 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
Cependant, (et c'est un gros avantage) ce code fonctionne galement sous Internet Explorer. Il n'est donc pas ncessaire d'ajouter des tests pour savoir s'il faut utiliser le paramtre ev de la fonction ou le gestionnaire d'vnements window.event que seul IE comprend.
- 11 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
Les attributs dfinis dans les feuilles de styles (CSS) sont inaccessibles par l'objet style de l'lment.
- 12 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
- 13 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
Une image sera insre dans le paragraphe. Nanmoins, cette mthode prsente quelques inconvnients lorsqu'il s'agit de modifier le contenu d'un formulaire (balise form). Lors de l'envoi du formulaire, les valeurs des objets crs via innerHTML ne sont pas toujours transmises au serveur. C'est pour cette raison qu'il est prfrable d'utiliser les mthodes grant les n#uds (Paragraphe V-B-1). Insertion d'une image en utilisant nodeValue
//Ciblage du paragraphe var e = document.getElementById("idPg"); //Cration de l'image var i = document.createElement("img"); //Source de l'image i.src = "imageInseree.gif"; //Modifiaction du texte (noeud #text) e.firstChild.nodeValue ="mon nouveau texte"; //Ajout de l'image avant le texte e.insertBefore(i,e.firstChild);
- 14 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
= "idP1" H4 #text (1) SPAN #text (2) A #text (3) = "idP2" H4 #text (4)
- 15 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
V-B - Cration, insertion, suppression d'un n#ud V-B-1 - Mthodes Javascript pour la gestion des n#uds
Quelques fonctions permettant de grer les n#uds du document. Mthodes createElement() createTextNode() appendChild() insertBefore() removeChild() Commentaires Mthode pour crer un nouvel lment HTML dans le document (div, p, span, a, form, input, etc...). Mthode pour crer un n#ud texte. Pour ajouter l'lment cr dans le document. L'lment sera ajout comme tant le dernier n#ud enfant d'un lment parent. Pour ajouter l'lment cr avant un autre n#ud. Pour supprimer un n#ud.
V-B-2 - Exemple
Lien vers le script complet
|-|-|-|-|-"idBouton"
type = "button" id =
- 16 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
Cration des trois textNode Votre texte ; Vos options ; La suite : nous utilisons la fonction createTextNode(). Syntaxe de la mthode createTextNode()
document.createTextNode("Texte du n#ud");
Cration de la liste droulante : le code ci-dessous ne permet de crer que la balise select. Nous verrons plus loin comment crer et ajouter les options la liste. Cration de la liste droulante
//cration de l'lment select var elSelect = document.createElement("select"); //nombre d'lments visibles elSelect.size = "1";
Cration des options de la liste droulante. Les options sont des objets de la liste. Pour les crer nous n'utilisons pas la mthode createElement(). Nous allons
- 17 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
Les objets sont crs mais ne sont pas ajouts la liste pour autant. Cration des options d'une liste
//Tableau contenant les options de la liste var elOption = new Array( new Option("Votre choix", "", false, false), new Option("Option 1", "valeur1", false, false), new Option("Option 2", "valeur2", false, false), new Option("Option 3", "valeur3", false, false), new Option("Option 4", "valeur4", false, false) );
Cration d'une ligne pour sparer chaque groupe. Une feuille de style s'appliquera sur cette ligne. Cration d'une ligne
var ligne = document.createElement("hr"); ligne.className= "styleLigne";
- 18 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
(1) Internet Explorer : il faut insrer le select dans le document avant d'ajouter les options.
V-C - Ajax
AJAX est une mthode de programmation des pages Web qui s'appuie sur des scripts Javascript en utilisant l'objet xmlHttpRequest (aussi appel XHR). Celui-ci permet de raliser des requtes vers le serveur de manire asynchrone et ainsi de mettre jour tout ou une partie du contenu d'une page Web. Qu'est-ce qu'Ajax ? La rubrique Ajax Les ressources Ajax sur developpez.com
- 19 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/
VI-B - Liens
Pour plus d'informations sur le langage Javascript, consultez les liens suivants : La section Javascript de www.developpez.com Les codes sources Javascript La FAQ Javascript Le site de l'ECMA Le site du World Web Consortium (W3C)
VI-C - Remerciements
Merci DenisC et Yogui pour la relecture et leurs contributions dans la rdaction de cet article. Merci Bisnrs pour sa relecture.
- 20 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'autorisation de l'auteur.
http://sergep.developpez.com/tutoriels/javascript/introduction/