Académique Documents
Professionnel Documents
Culture Documents
hubert.borderiou@ujf-grenoble.fr
Présentation de chacun.
Qu'attendez-vous de Javascript ?
Schéma simplifié :
Requête Fichier
HTTP Serveur : HTML Client :
Client :
- navigateur + URL - construit la page web - page web affichée
(php, base de données...) dans le navigateur,
éxécution du code
Javascript.
− ce qu'il fait
− contrôler dynamiquement une page web (lire, modifier, supprimer des éléments) au niveau
du navigateur.
La page web chargée, elle est manipulée au niveau du client sans nouvel échange avec le
serveur.
− Intégrer une application dans une page web (ex : une calculatrice, une table de choix des
couleurs, un éditeur HTML...)
− lire/écrire un cookie (http://www.actulab.com/les-cookies-en-javascript.php)
− utiliser des événements afin de déclencher des actions dans la page web, sans
communication avec le serveur (ex : afficher du texte, une image suite à un click ou au
survol d'une zone).
− ce qu'il ne fait pas
− lire des informations contenues sur le serveur (c'est le travail de PHP, Java, Perl...)
− lire des informations contenues sur le poste client (à l'exception des cookies). (ouf !).
2 Le langage Javascript
Ce document ne présente pas le langage Javascript de manière exhaustive, pour des informations
1.1.1 Généralités
– Javascript est sensible à la casse : toto différent de Toto différent de TOTO
– Les commentaires Javascript débutent par /* et se terminent par */ pour des
commentaires sur plusieurs lignes; ou commençant par // pour des commentaires sur une
seule ligne
Ex : commentaires en Javascript :
/* ceci est une commentaire Javascript
sur plusieurs lignes */
// ceci est un commentaire Javascript sur une ligne
var data = 12; // description de la variable en commentaire ici !
<!-- Commentaire HTML -->
– La balise <noscript> : tout message entre les balises <noscript> et </noscript> ne sera vu que
par un utilisateur dont le Javascript est désactivé dans son navigateur.
2.2.1.1 Déclaration
On déclare une variable avec le mot réservé var.
var valeur; // la variable a la valeur undefined
var valeur = 2000;
var valeur = "deux mille";
On retrouve en Javascript les types de variables d'un langage standard. Le typage en Javascript est
dit faible; c'est à dire que l'on peut utiliser une variable dans un contexte ou son type serait
inaproprié.
Ex : typage faible de Javascript : exemple16.html
Toute variable déclarée hors du champ d'une fonction sera globale et vue par le code Javascript
suivant sa déclaration.
2.2.2 Tableaux
Déclaration d'un tableau :
var tableau = new Array();
Taille initiale d'un tableau : var tableau = new Array(5);
Tableau avec valeurs prédéfinies : var tableau = new Array("un", "deux", "trois");
Assigner une valeur : tableau[0] = "valeur";
Taille d'un tableau : tableau.length (indices de 0 à tableau.length-1)
Parcourir un tableau : for (var i=0; i<tab.length; i++) { document.write(tab[i]); }
2.2.3.1 Tests
2.2.3.1.1 If
&& : et logique
|| : ou logique
! : non logique
Exemple :
var i=1;
var j=2;
var k=3;
if (i == 1 && (j>3 || k==3)) { // est vrai
...;
}
2.2.3.1.2 Switch
Exemple :
var nom="jean";
switch (nom) {
case "jean" : alert("Bonjour jean");
break;
case "bob" : alert("Bonjour bob");
2.2.3.2 Boucles
2.2.3.2.1 While
Exemple :
Var i=0;
While (i<12) {
...;
i++;
}
2.2.3.2.2 For
Exemple :
For (var i=0; i<12; i++) {
...;
}
(source : http://fr.selfhtml.org/javascript/objets/regexp.htm)
Composante Exemple Description
trouve "par", à savoir dans "par", "départ", "parlement" et
/par/
"répartie".
^ trouve "par" au début de la valeur à rechercher, à savoir dans
/^par/ "par" et "parlement", à condition que l'un de ces mots apparaisse
en premier dans la valeur.
$ trouve "par" à la fin de la valeur à rechercher, à savoir dans
/par$/ "par" et "Épar", à condition que l'un de ces mots apparaisse en
dernier dans la valeur.
* trouve "par", "parr" et "parrrrrr", donc le dernier signe avant
/par*/
l'étoile est répété 0 ou un nombre de fois au choix.
+ trouve "parr" et "parrrrrr", donc le dernier signe avant l'étoile
/par+/
est répété au moins une ou un nombre de fois au choix.
. trouve "épar" et "Spar", donc un signe au choix à un endroit
/.par/
déterminé.
.+ trouve "épar" et "hépar", donc une suite de signes au choix à un
/.+par/ endroit déterminé. Résumé de caractère au choix et nombre au
choix de caractères au choix.
\b trouve "par" en tant que mot distinct. \b signifie une extrémité
/\bpar\b/
de mot.
\B trouve"par" uniquement à l'intérieur de mots, par exemple dans
/\Bpar\B/
"départir" ou "impartir". \B signifie pas d'extrémité de mot.
\d trouve un chiffre entier quelconque. \d signifie un chiffre (0 à
/\d.+\B/
9)
2.2.5.2 match
Soit re une expression régulière et chaîne une chaîne de caractères :
chaine.match(re) : retourne la chaîne matchée si la chaîne vérifie l'expression régulière re, null
sinon.
Exemple : utilisation de match (exemple09.html)
<html>
<body>
<h3>Expressions régulières : match</h3>
<script type="text/javascript">
var nom1="jean 23";
var nom2="23 JEAN 23";
var nom3="23";
var re=/[a-z]+/gi;
document.write(nom1.match(re)+"<br/>");
document.write(nom2.match(re)+"<br/>");
document.write(nom3.match(re)+"<br/>");
if (nom1.match(re)) { document.write(nom1+"
matche"); }
</script>
</body>
</html>
Vous pourrez trouver quel événement est utilisable pour quel élément HTML à l'adresse suivante :
http://www.w3schools.com/tags/default.asp; en sélectionnant un élément et dans la partie "Event
Attributes".
(source : http://www.w3schools.com/tags/ref_eventattributes.asp)
"DOM permet de construire un arbre logique contenant les informations issues d'un document. Il est
donc nécessaire de parcourir et de mémoriser l'intégralité du document avant de pouvoir effectuer
les traitements voulus. Pour cette raison, les programmes utilisant DOM ont souvent une empreinte
mémoire volumineuse en cours de traitement. À l'inverse, à partir d'un arbre DOM donné, il est
possible de générer des documents dans le langage de balisage voulu, qui pourront à leur tour être
manipulés par l'interface DOM.
Lorsqu'une modification de l'arbre DOM est effectuée, elle est affichée dynamiquement par la page
web, sans avoir besoin ni d'accéder au serveur, ni de recharger la page.
Note : les types d'éléments renvoyés sont en majuscule. Afin d'éviter toute confusion lors de test
d'égalité, on pourra utiliser les fonctions toLowerCase() toUpperCase().
Ces fonctions sont utiles lors de test de deux chaînes de caractères.
Exemple :
if ( document.monform.nodeName.toLowerCase() == "form") { ... }
var nom1 = "jean";
var nom2 = "Jean";
if (nom1.toLowerCase() == nom2.toLowerCase()) { ... }
<html>
<body>
<h3>Information concernant le navigateur :</h3>
<script>
document.write("System d'exploitation :
"+window.navigator.platform+"<br/>");
document.write("Nom du navigateur :
"+window.navigator.appName+"<br/>");
document.write("Version du navigateur :
"+window.navigator.appVersion+"<br/>");
document.write("Langage du navigateur :
"+window.navigator.language+"<br/>");
document.write("Le navigateur autorise les
cookies :
"+window.navigator.cookieEnabled+"<br/>");
document.write("Liste des plugins installés sur
le navigateur :");
document.write("<p style='font-size:80%; font-
style:italic;'>");
for (var i in window.navigator.plugins){
document.write(window.navigator.plugins.item(
i).name+"<br/>");
}
document.write("</p>");
</script>
</body>
</html>
On trouvera aussi des fonctions comme : getAttribute, firstChild, childNodes, parentNode etc...
Ces fonctions sont documentées sur le site de référence DOM :
http://www.mozilla.org/docs/dom/domref/dom_shortIX.html
<body>
<div id="bloc1" class="style1">
Mon texte original.
</div>
<script type="text/javascript">
// on test si l'élément d'id "bloc1" existe
if (document.getElementById("bloc1")) {
document.write("bloc1 est un élément :
"+document.getElementById("bloc1").nodeName);
Source : http://fr.selfhtml.org/javascript/objets/frames.htm
"Avec l'objet frames vous avez accès aux cadres, à savoir à un jeu de cadres et à ses fenêtres cadres
définis dans un fichier HTML.
Étant donné que chaque fenêtre cadre représente une fenêtre distincte pour le navigateur, l'objet
frames est en fin de compte une variante de l'objet window, l'objet fenêtre plus général. Toutes les
propriétés et méthodes qui font partie de l'objet window peuvent être aussi utilisées sur l'objet
frames donc sur des fenêtres cadres distinctes. L'objet frames ne représente un objet distinct que
parce qu'il comprend une propriété supplémentaire et qu'un certain nombre de particularités pour
l'adressage de fenêtres cadres en JavaScript sont à observer:
Schéma 1 / exemple 1:
parent.frames[#].propriété/méthode();
parent.frames[1].location.href = "sport.html";
Schéma 2 / exemple 2:
parent.nomdecadre.propriété/méthode();
parent.fenetredroite.close();
Explication:
parent est un nom de fenêtre réservé que vous pouvez utiliser pour adresser les fenêtres d'un jeu de
cadres. À la place de parent vous pouvez également utiliser top. Avec parent vous adressez la
fenêtre mère de la fenêtre cadre actuelle, avec top dans chaque cas la fenêtre d'affichage du
navigateur la plus élevée dans la hiérarchie.
Vous pouvez adresser les fenêtres cadres de deux façons:
avec un numéro d'index (comme dans le schéma 1 / exemple 1)
Si vous utilisez des numéros d'index, mentionnez frames suivi entre crochets du numéro d'ordre de
la fenêtre cadre désirée dans le jeu de cadres. Veillez que le comptage commence par 0, c'est à dire
vous adressez la première fenêtre cadre avec frames[0] la deuxième fenêtre cadre avec frames[1]
etc... Pour le comptage prévaut l'ordre dans lequel les commandes <frame> sont définies dans le jeu
de cadres.
avec le nom de la fenêtre cadre (comme dans le schéma 2 / exemple 2)
Pour cela, mentionnez le nom défini dans la définition HTML de la fenêtre cadre <frame ...> avec
l'attribut name=.
Étant donné que l'objet frames est à vrai dire une variante de l'objet window, vous pouvez non
seulement utiliser toutes les propriétés et méthodes de l'objet window sur l'objet frames, mais aussi
toutes les autres qui dans la hiérarchie sont sous l'objet window. De la même façon que vous pouvez
Source : http://fr.selfhtml.org/javascript/objets/window.htm
L'objet window (Fenêtre) est l'objet le plus élevé dans la famille des objets pour tout ce qui est
affiché dans la fenêtre du navigateur. Par l'intermédiaire de l'objet window vous pouvez questionner
et contrôler la fenêtre du document. De plus, vous pouvez définir de nouvelles fenêtres et en
spécifier librement les propriétés.
Vous pouvez adresser la fenêtre d'affichage principale disponible du navigateur WWW par les
objets window ou self. Les propriétés et méthodes de l'objet window peuvent être appliquées aux
objets window et self.
Exemple:
<html><head><title>Test</title>
<script type="text/javascript">
<!--
window.defaultStatus = "Ma page d'accueil";
//-->
</script>
</head><body>
</body></html>
Explication:
L'exemple affiche en permanence dans la barre d'état de la fenêtre d'affichage actuelle la valeur "Ma
page d'accueil". Pour cela la propriété de fenêtre vers le bas defaultStatus a été appelée.
window ou self peuvent aussi être omis. Ainsi window.moveTo(200,100) a le même effet que
moveTo(200,100).Pour la clarté il est pourtant préférable de mentionner le nom prédéfini de l'objet.
.
Vous pouvez non seulement adresser des fenêtres disponibles avec JavaScript, mais aussi créer de
nouvelles fenêtres et adresser celles ci sous des noms de variables."
Exemple 21 : exemple21.html.
Ouverture d'une nouvelle fenêtre et manipulation de son contenu.
Exercice 1 : réaliser un formulaire qui demande à l'utilisateur ses nom, prénom, numéro d'adhérent
(3 chiffres) et mail. Le bouton submit appellera une fonction check_form() qui retournera vrai ou
faux selon la validité des valeurs des champs du formulaire. Nom, prénom et numéro d'adhérent
sont des champs obligatoires, le mail est facultatif.
Afin de simplifier cet exercice, l'action du formulaire sera action="javascript:alert('Formulaire
envoyé au serveur')" et non l'appel à une page web, par exemple, PHP.
Indice 1 : on utilisera l'événement onsubmit="return check_form();"pour l'élément <form>
En effet, si onsubmit est à vrai, le formulaire sera envoyé au serveur; si onsubmit est à faux, rien ne
se passe.
Indice 2 : on accède à la valeur des éléments du formulaire en utilisant :
document.nom_formulaire.nom_element.value
Exercice 1.1+ : en cas de valeur erronée d'un champ lors de l'appui sur le bouton submit l'élément
dont la valeur est erronée sera activé et son contenu sélectionné : on utilisera les fonctions focus() et
select().
Exercice 1.1++ : on enlèvera les espaces avant et après la valeur de l'élément avant sa vérification.
On ajoutera la fonction trim comme suit :
String.prototype.trim = function() { return this.replace(/^\s*|\s*$/g, '') }
ex : mon_texte_sans_espace = montexte.trim();
Exercice 1.2 : créer un fichier checkform.js qui contiendra une fonction vérifiant la conformité
d'une valeur et sa taille minimum et maximum.
On n'utilisera pas la fonction trim pour cet exercice.
Spécification de la fonction :
nom : verifChamp