Académique Documents
Professionnel Documents
Culture Documents
Pour étendre les possibilités des pages HTML, pour les rendre interactives et pour effectuer certains traitements au
niveau du client avant de soumettre la page web à un serveur, le développeur utilise des scripts. Javascript est
actuellement le langage de scripts le plus utilisé. Il est léger et orienté objet et il est supporté par la plupart des
navigateurs sur le marché.
Remarque : Les langages de scripts contrairement aux langages de programmation n’ont pas besoin d’un
programme spécial et d’un compilateur pour s’exécuter. Les instructions écrites par un langage de programmation
sont interprétées directement par le processeur de la machine mais les instructions écrites dans un langage de script
sont interprétés par un autre programme (le navigateur) et n’ont pas besoin d’un compilateur spécial.
UTILISATION
Les Scripts JavaScript sont intégrés dans une page web de plusieurs manières :
En écrivant le script entre une balise <Script> et </Script> :
<Script type="text/javascript">
<!--
Ecriture Script
-->
<NoScript>
Traitement si le navigateur n'accepte pas les scripts
</NoScript>
</Script>
En associant le script à un événement :
<NomBalise…..onEvénement="Ecriture Script">
En associant le script à un lien :
<a href="JavaScript:Ecriture Script"…>…</a>
Remarque : Pour empêcher que le script dans href ne remplace le document courant, on applique l'opérateur void,
qui neutralise toute valeur ou tout effet de retour : <a href="JavaScript:void(Ecriture Script)">…</a>
En écrivant le script dans un fichier ayant l'extension .js et en l'appelant dans la page web à l'aide de
l'instruction :
<Script type="text/javascript" src="FichierScript.js></Script>
Remarque:
Les Scripts peuvent être placés dans le Head ou dans le Body. Dans le Head ils seront reconnus dès le
chargement de la page.
Un gestionnaire d'événement est la procédure particulière attachée à un événement dans une balise HTML
Il est possible d'utiliser plusieurs gestionnaires d'événements dans une même balise
CONCEPTS DE PROGRAMMATION
Insertion de commentaires
Sur une ligne :
//Commentaire
Sur plusieurs lignes :
/*Commentaire
Commentaire*/
Utilisation des variables
Pour déclarer une variable :
var Variable1 [=Valeur_initiale1], Variable2 [=Valeur_initiale2], …
Remarque : La déclaration se fait de manière implicite si une variable est utilisée dans le script mais qu'elle n'a pas
été déclarée à l'aide de var.
Utilisation des tableaux (objet Array)
Déclaration:
- Tableaux à une dimension :
Le nombre d'éléments du tableau est inconnu :
Le bloc catch ne sera exécuté que s’il y a une erreur dans le bloc d’instructions. Le bloc finaly est toujours exécuté
qu’il y ait ou qu’il n’y ait pas d’erreur (Bloc facultatif).
Une exception peut se déclencher automatiquement mais on peut aussi la forcer. Pour forcer une
exception : throw "Message". L’exception levée ainsi doit être capturée par un bloc catch
fonctions
Déclaration
function nom_Fonction(argument1, argument2…)
{
instructions
[return valeur]
}
Appel
L'appel se fait :
A partir d'une autre fonction : NomFonction(…)
ou
Suite à un événement : <NomBalise …..onEvénement="NomFonction(….)">
ou
Si la fonction retourne une valeur, à partir d'une variable : Variable=NomFonction(….)
Remarque :
Les variables déclarées dans des fonctions sont considérées comme locales si l'instruction var est utilisée
dans leur déclaration sinon elles sont considérées comme globales.
Les variables déclarées au niveau du Script sont considérées comme globales (des variables attachées à
l’objet window qu’on traitera plus tard. En cas de conflit entre une variable locale et une variable globale
portant le même nom, la variable globale sera appelée par : window.Nom_Variable).
Création d’un prototype
Il est possible de créer en javascript des objets tels qu’ils sont définis en orienté objet. Pour cela on crée un
prototype. Le prototype est une fonction qui va servir de constructeur au nouvel objet et où seront déclarées
les différentes propriétés de l’objet.
function nom_prototype (propriété1_objet, propriété2_objet, propriété3_objet…)
{
this.propriété1=valeurPropriété1
this.propriété1=valeurPropriété2
Naoual ABDALLAH / JavaScript 3
this.propriété1=valeurPropriété3
…
}
…
Utilisation de quelques fonctions indépendantes
Ce sont des fonctions non reliées à des objets. Elles sont plutôt rares. En voici quelques-unes :
- eval(chaîne) : Evalue une chaîne de caractère en un nombre (eval(Chaîne))
- isNaN(élément) : Revoie true si élément n'est pas un nombre et false sinon
(variable=isNaN(élément))
- parseInt(chaîne) : Evalue une chaîne de caractère en un nombre entier (parseInt(chaîne))
- parseFloat(chaîne) : Evalue une chaîne de caractère en un nombre à virgule flottante
(parseFloat(Chaîne))
OBJETS DU NAVIGATEUR
JavaScript fournit un certain nombre d’objets définis dans le noyau et indépendants du navigateur :
Objet navigator
Correspond au navigateur utilisé par le visiteur de la page. Les propriétés de l’objet navigator permettent d’obtenir
des informations sur le navigateur que le script Javascript peut utiliser pour orienter ses décisions.
Quelques propriétés
- navigator.appCodeName : Retourne un code identifiant le navigateur mais IE et Nestscape ont le
même nom de code
- navigator.appName : Retourne le nom du navigateur (Mozilla, Internet Explorer,…)
- navigator.appVersion : Retourne la version du navigateur sous la forme (NuméroVersion(Sytème
d'exploitation, codeNationalité de la version)
- navigator.cookieEnabled : Retourne true si les cookies sont activés et false s’ils sont bloqués
- navigator.userAgent : Retourne toutes les informations concernant le navigateur client
- navigator.userLanguage : Retourne la langue utilisée par le navigateur
Objet history
Offre les propriétés et méthodes nécessaires à l'accès à la liste d'historique stockée par le navigateur.
Quelques méthodes
- history.length : Retourne le nombre de pages visitées
Quelques méthodes
- history.back() : Charge le document précédent
Naoual ABDALLAH / JavaScript 5
- history.forward() : Charge le document suivant
- history.go(p): Charge le document se trouvant à la position : position courante + p (p>0 ou p<0)
Objet window
L'objet window représente une fenêtre du navigateur. Il offre un ensemble de propriétés et de méthodes
fréquement utilisées.
Remarque : le mot clé self désigne la fenêtre window (fenêtre principale). window et self désignent le même objet et
peuvent donc être utilisés indifféremment.
Quelques propriétés
- name : Attribue et retourne le nom de la fenêtre (window.name="Nom")
Remarque :
Un nom de fenêtre peut être utilisé pour désigner la fenêtre comme cible pour un lien hypertexte
<a href="… " target="NameFenêtre">
Puisqu'un nom de fenêtre reste conservé aussi longtemps que la fenêtre est ouverte, il peut être
utilisé pour transmettre certaines valeurs d'une feuille à une autre.
- defaultstatus : Affecte et retourne le texte par défaut qui sera affiché dans la barre d'état du
navigateur
- status : Affecte et retourne le contenu actuel de la barre d'état.
- closed : Renvoie un booléen indiquant si la fenêtre est fermée ou non (Fenêtre.closed)
- location : Retourne l'URL de la fenêtre en cours(window.location)
- innerHeight : Retourne la hauteur de la fenêtre (Fenêtre.innerHeight)
- innerWidth : Retourne la largeur de la fenêtre (Fenêtre.innerWidth)
- screenX : Retourne la position horizontale de la fenêtre à l’écran (Fenêtre.screenX)
- screenY : Retourne la position verticale de la fenêtre à l’écran (Fenêtre.screenY)
- self : Représente la fenêtre en cours
- parent : Représente la fenêtre parent
- opener : retourne la fenêtre qui a ouvert la fenêtre
Quelques méthodes
- alert('message') : Affiche une boîte de dialogue contenant le message (alert('message') ou
alert('message' + variable…))
- prompt("Message",Valeur par défaut) : Affiche une boite de dialogue avec un champ de saisie, un
bouton "Ok" et un bouton "Annuler". Si l'utilisateur a appuyé sur le bouton "Annuler", cette
méthode retourne la valeur null. Si l'utilisateur n'a rien saisi et qu'il a appuyé sur le bouton "Ok", la
méthode retourne le vide ("") sinon elle retourne la valeur saisie par l'utilisateur
(variable=prompt("Message",Valeur par défaut)
- confirm("Message") : Ouvre une boite de dialogue avec deux boutons pour "OK" et "Annuler". Si
l'utilisateur a appuyé sur Ok, la méthode retourne true sinon elle retourne false. Judicieux pour
forcer l'utilisateur à prendre une décision qui sera traitée dans la suite du programme. Attend comme
paramètre un texte interrogatif pour la décision oui/non. Renvoie comme résultat la décision de
l'utilisateur.
- open("Fichier à Charger", "Nom Fenêtre (propriété name)"[,"CaractèristiqueFenêtre1=Valeur,
CaractèristiqueFenêtre2=Valeur,…"]) : Ouvre une nouvelle fenêtre, en lui affectant et en définisant
ses caractèristiques d'affichage :
width=valeur en pixel : Largeur de la fenêtre
height=Valeur en pixel : Hauteur de la fenêtre
top=Valeur en pixel : Position verticale du coin supérieur gauche de la nouvelle fenêtre
left=Valeur en pixel : Position horizontale du coin supérieur gauche de la nouvelle fenêtre
location=yes|no : Indique si la barre d'adresse s'affichera ou non sur la nouvelle fenêtre (par
défaut no)
menubar=yes|no : Indique si la barre de menus s'affichera ou non sur la nouvelle fenêtre (par
défaut no)
toolbar=yes|no : Indique si la barre d'outils s'affichera ou non sur la nouvelle fenêtre (par
défaut no)
Objet document
Représente le document html. L’objet document apporte des fonctions générales liées à l’utilisation de la page et
sert de point d'entrée au contenu de cette page. En fait tout ce qui existe dans un document HTML peut être
manipulé en utilisant le DOM (Document Object Model).
Le DOM est une API (Application Programming Interface) qui va permettre à JavaScript de communiquer avec les
éléments du document. Le DOM offre une architecture (un arbre) qui se compose d’un ensemble de nœuds (nodes)
et que Javascript va exploiter pour manipuler les éléments de n’importe quel document html (modification,
suppression, déplacement, test…).
Le DOM est passé par plusieurs versions. Si au départ il était dépendant du navigateur utilisé, aujourd’hui il est plus
unifié et constitue une spécification du w3c. Il permet l’accès à beaucoup plus d’éléments dans la page (comme les
titres, les span et les divs qui n’étaient pas accessibles au départ).
Un document HTML contient un ensemble d’éléments (Element) pouvant à leur tour contenir des éléments
enfants ou du texte (#text). Chaque élément possède, selon son type, des propriétés et des méthodes qui sont soit
directes soit héritées de son type parent.
Exemple :
document DOM correspondant
<!DOCTYPE html> C
<html>
<head>
<meta charset="utf-8" />
<title>Le titre de la page</title> <html>
Element
</head>
<body>
<head> <body>
<h1>Titre de Niveau 1 </h1> Element Element
<a href="#">Lien hypertexte </a>
<div> <a>
<meta> <title> <h1> <div>
Element
<p>Ceci est un premier paragraphe</p> Element Element Element Element
Avec attribut href
</div>
</body> <p>
#text #text #text
Element
</html>
#text
Remarque : Certains éléments du document sont également accessibles par des collections. Par exemple :
- images : Représente un tableau contenant toutes les images du document. Il est possible ainsi
d'accéder à n'importe quelle image contenue dans le document, de consulter ou de modifier ses
caractéristiques en fournissant son indice ou son nom (images[indice] ou images["nomImage"]).
- forms : Représente un tableau contenant tous les formulaires du document. Il est possible ainsi
d'accéder à n'importe quel formulaire contenu dans le document, de consulter ou de modifier ses
caractéristiques en fournissant son indice ou son nom (forms[indice] ou forms["nomFormulaire"])
- …
Les styles
Les feuilles de styles styleSheets (incorporées ou externes) sont classées par ordre (la première a
l'indice 0). Elles sont disponibles dans un tableau styleSheets. De même les règles de style définies
dans une feuille de style donnée sont disponibles dans un tableau rules commençant par l'indice 0.
Les propriétés de styles en JavaScript sont déduites de celles utilisées en CSS en respectant la règle
suivante : pour chaque propriété composée de deux mots séparés par un tiret, le tiret va disparaître
et la première lettre du deuxième mot sera en majuscule.
- Pour modifier le style d'un élément
Element.style.propriétéStyle=valeur
- Pour modifier une règle de style à partir d'une feuille de style
X=document.styleSheets[position feuille Style].rules[position règle]
X.style.propriétéstyle=valeur
- Pour ajouter une règle de style à une feuille de style
document.styleSheets[indice].addRule(
"ElementConcerné","Propriété_style1: Valeur; Propriété Style2:Valeur…")
- Pour supprimer une règle de style d'une feuille de style
Naoual ABDALLAH / JavaScript 10
document.styleSheets[indice].remov
eRule(indice)
- Pour désactiver/activer une feuille de style
document.styleSheets[indice].disabled=true|false
- Pour modifier la source d'une feuille de style
document.styleSheets[indice].href="Chemin/feuille.css"
Les cookies
Les cookies sont des fichiers que les serveurs web créent sur les disques durs de leurs clients (visiteurs du
site web) pour y mettre certaines informations et variables qu'ils pourront récupérer (les serveurs web) à la
prochaine visite du même client. Ces informations peuvent être créées, lues et modifiées dans JavaScript à
l'aide de la propriété cookie de l'objet document.
Remarque : Il est possible d'avoir plusieurs cookies pour un seul site. Chaque cookie se compose d'un
ensemble de champs :
- Pour créer un cookie :
document.cookie="NomCookie=ValeurCookie[;expires=DateExpiration;
path=Chemin;domain=DomaineCookie;secure]"
NomCookie : Nom à attribuer au cookie (obligatoire)
valeurCookie : Donnée à stocker dans le cookie
DateExpiration : Date à partir de laquelle le cookie sera désactivé et ne sera plus
chargé par le serveur web. Si aucune date d'expiration n'a été spécifiée, le cookie est
supprimé à la fermeture du navigateur et n'est pas enregistré. De même si on
spécifieune date d'expiration qui est déjà passée.
Remarque : La date d'expiration est sous le format :
Jour abrégé,JJ-MM-AA HH:MM:SS GMT
Chemin : Indique le chemin pour lequel le cookie sera reconnu. Par défaut le cookie
est reconnu sur le site à partir du dossier où il a été créé. Si on souhaite rendre un
cookie visible sur tous le site il suffit d'attribuer "/" à path
DomaineCookie : Site web concerné par le cookie, les autres sites devant l'ignorer.
Par défaut il s'agit du site qui a écrit le cookie
secure : si le mot clé secure est indiqué dans un cookie, le cookie ne sera transmis
que si la connexion vers le serveur est sécurisée (protocole HTTPS).
Remarque :
Un même "client" peut stocker un maximum de 300 cookies à 4000 octets chacun,
dont 20 maximum pour un même serveur.
L'emplacement des cookies dépend des navigateurs et des systèmes d'exploitation.
- Pour modifier un cookie : La réaffectation de valeurs à un cookie dont le nom a été déjà enregistré
le modifie.
document.cookie="NomCookie=…"
Remarque : Si au cours de la modification, la date d'expiration n'a pas été spécifiée, le cookie est
supprimé
- Pour lire un cookie :
La propriété document.cookie stocke des informations sur tous les cookies créés. Pour accéder à
la valeur d'un cookie, il faut la rechercher dans la chaine document.cookie sachant que deux
cookie ne peuvent pas porter le même nom.
function CookieLire(Nom) {
var Paires = document.cookie.split('; ');
for (var i = 0; i < Paires.length; i++){
Paires[i] = Paires[i].split('=')
if (Paires[i][0] == Nom)
return Paires[i][1]
}
return null;
}
Remarque : A partir du med ;dnu Outils/Options/Confidentialité de Internet Explorer, il est
possible de déterminer le comportement que le client aura avec les cookies (bloquer, autoriser,
Naoual ABDALLAH / JavaScript 11
demander à l'utilisateur…). La configuration choisie sera stockée dans la base de registre pour être
chargé à chaque démarrage de la machine.
Les formulaires
- Pour valider un formulaire
Var_Form.submit()
- Pour réinitialiser un formulaire
Var_Form.reset()
Les évènements
- Pour associer à partir de javascript des procédures évènementielles à des événements :
Nom_Element.OnEvenement=function(){…..}
ou
Nom_Element.addEventListener("Evènement", function(){…..},true|false)
ou
Nom_Element.addEventListener("Evènement", nom_function,true|false)
La valeur true indique que le bouillonnement est désactivé. Le bouillonnement d'évènement est le
phénomène qui fait remonter un évènement chez tous les parents de l'objet touché, ce qui peut dans
certains cas, considérablement diminuer les performances du système (seule cette phase est autorisée
dans la première syntaxe=syntaxe du DOM0)