1 JavaScript V0 : Nauer. 2 JavaScript Quid ? Langage de programmation lié à HTML. Code JavaScript intégré aux pages HTML. Code interprété par le navigateur.

Slides:



Advertisements
Présentations similaires
1 JavaScript V0 : Nauer. 2 JavaScript Quid ? Langage de programmation lié à HTML. Code JavaScript intégré aux pages HTML. Code interprété par le navigateur.
Advertisements

HTML Abda Anne Plan Présentation Structure Texte Listes Images Liens Tableaux Formulaires.
LE LANGAGE JAVASCRIPT LES FENETRES.
Conception de Site Webs dynamiques Cours 5
TOUQUET Arnaud ▪ GI05 BLONDEEL Igor ▪ GM05
Copyright France Télécom, tous droits réservés Paris Web Ateliers Les bibliothèques JS jQuery Orange Labs Julien Wajsberg, Recherche & Développement.
Introduction Aux Systèmes dInformation et Multimédia T. Bourdeaudhuy S. Collart-Dutilleul P. Kubiak IG 2 I - Saison 2006/2007 (X)HTML / Pages Web Statiques.
1 JavaScript V0 : Nauer. 2 JavaScript Quid ? Langage de programmation lié à HTML. Code JavaScript intégré aux pages HTML. Code interprété par le navigateur.
1 Javascript Merci à Emmanuel Nauer. 2 Javascript Quid ? Langage de programmation lié à HTML. Code Javascript intégré aux pages HTML. Code interprété
HTML Les types de balises
TP 3-4 BD21.
Formulaire HTML Introduction. Définition de formulaire.
Introduction aux Web Services Partie 1. Technologies HTML-XML
Cours n°3 Les formulaires
La balise <FORM>:
Common Gateway Interface
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Présentation de la séquence de cours sur les interactions HTML-javascript Laure Walser, 11 juin 2010.
Ecole Supérieure Privée de ingénierie et de technologie année universitaire :2013/2014 Cross-Plateform Cours JavaScript.
Les instructions PHP pour l'accès à une base de données MySql
28 novembre 2012 Grégory Petit
Le langage Javascript pour le web et application au DHTML
Méthode de suppression des cadres entourant les animations flash et activation automatique de leur focus lors du chargement des pages dans Internet Explorer.
Manipulation de formulaires en Javascript
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
JavaScript.
AJAX.
Feuilles de styles CSS Syntaxe d'application d'un style à une balise HTML : Les différents types de style : Pourquoi utiliser un style ? Possibilité étendue.
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Animateur : Med HAIJOUBI
Javascript 1° PARTIE : LES BASES
TP n°3 Javascript Contrôle de formulaire
TP n°2 Javascript EVENEMENTS ET OBJETS
Évènement Petites fonction déjà toute faites Exemple : Construction onLoad (au chargement) = "ce qui doit se passer" onLoad s’exécute toujours dans le.
PHP & My SQL.
Le langage XHTML 420-S4W-GG Programmation Web Client
Programmation JavaScript cours inspiré du cours de R. Vivian.
Javascript 2° PARTIE : EVENEMENTS ET OBJETS
I- Introduction au langage II- Le formalisme de base III- Les Objets JavaScript IV- Les Variables V- Opérateurs prédéfinis VI- Les Entrées/Sorties VII-
PROGRAMMATION WEB FRONT-END.
JavaScript Nécessaire Web.
Créer son site web Chapitre II. Les caractères spéciaux Les navigateurs ne reconnaissent pas les caractères spéciaux. Heureusement chaque caractère possède.
Introduction à JavaScript
PHP 5° PARTIE : LES COOKIES
Les guides de formation Conception de pages web. Guide Virtuose - version enseignant2 Guide - Conception de pages web Introduction Introduction, p. 3.
JavaScript.
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
Les balises HTML et les objets JavaScript correspondants Objet document L'objet document est important dans la mesure ou il contient tous les objets du.
 Objet window, la fenêtre du navigateur
Tutorat en bio-informatique
S'initier au HTML et aux feuilles de style CSS Cours 5.
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
Dynamic HTML Regroupement de trois éléments : le HTML
S'initier au HTML et aux feuilles de style CSS Cours 5.
 Formulaires HTML : traiter les entrées utilisateur
AJAX Jérôme CUTRONA 06:28:58 Programmation Web
Initiation au JavaScript
Programmation Web : DOM en PHP Jérôme CUTRONA 11:06:45 Programmation Web
Conception des pages Web avec
TWP Toolkit Formation 21/10/2009.
Dreamweaver Séance 1.
Dreamweaver MX Jauneau Marie Claude-Antoine Zarate.
Présentation Dreamweaver 8 (1) Nina BOUAZIZ et Matthieu DI RUSSO SI28.
Guillaume MICHAUD – Yvan LECOMTE
SI28 – Ecriture interactive et multimédia Sylvain Slaton – Pierre Laporte.
DREAMWEAVER MX2 - Séance 2 Les calques Les comportements Les scénarios Les formulaires Les feuilles de style Les modèles Les cadres Mise en ligne Jérôme.
Introduction au HTML Qu’est ce que le HTML ?
Dreamweaver 2 Feuilles de Style CSS Formulaires Calques Comportements
Les calques Les Template (modèles) Les Comportements Les scénarios Les formulaires Les CSS Le serveur Web de l’UTC Présentation.
1 er séance SI28 A2004 YIN Lei Emmanuel Eugene. Plan de l’exposé  Introduction au HTML  Le HTML dans le bloc-notes (notepad)  Présentation de Dreamweaver.
Transcription de la présentation:

1 JavaScript V0 : Nauer

2 JavaScript Quid ? Langage de programmation lié à HTML. Code JavaScript intégré aux pages HTML. Code interprété par le navigateur client (interprétation dépendante du type et de la version de navigateur).  code PHP (interprété du coté serveur). Java Script est un langage à prototype (par opposition à un langage basé sur les classes et sous classes pour réaliser l'héritage) Tout objet JavaScript est doté d'une propriété prototype, qui représente le modèle sur lequel l'objet en question se base. événementiel (association d’actions aux événements déclenchés par l’utilisateur (passage de souris, clic, saisie clavier, etc...).

3 Les objets Un objet est un élément nommé ayant des Propriétés : paramètres que vous vérifier et modifier. Méthodes : actions que l’objet est capable d’effectuer. Événements : choses qui arrivent à l’objet, auxquelles celui-ci peut répondre automatiquement par une action.

4 Les événements Action Event JavaScript DOMR é action L'utilisateur place la souris sur l'objet Identification d'une action concernant l'objet Indique à l'objet ce qu'il doit faire Localise l'objet dans la page WEB La source de l'image Change

5 Les événements im1 = new Image(); im2 = new Image(); im1.src = "image1.gif"; im2.src = "image2.gif"; function changeImage (nomIm,src) { document.images[nomIm].src = src; } <A HREF="#" onMouseover="changeImage('image1',im2.src)" onMouseout="changeImage('image1',im1.src)" > Traite l'événement Associe un gestionnaire

6 Les événements On évitera les écritures suivantes : <a href="#" id="lien1" onMouseover="changeImage('image1',im2.src)" 1.intrusion du comportement dans le contenu 2.impossibilité d'associer + gestionnaires à un même événement Web 2.0

7 Les événements On écrira les événement sous la forme window.addEventListener('load',fonction,false); function fonction()[ document.getElementById('lien1').addEventListener('mouseover',verifie,false); } Web 2.0

8 JavaScript Intérêts de JavaScript ? Supporté (par défaut) par les principaux navigateurs, ne nécessite pas de plug-in particulier. Accès aux objets contenus dans un document HTML (+ possibilité de les manipuler relativement facilement). Possibilité de mettre en place des animations sans l’inconvénient des longs temps de chargement nécessités par les données multimédia. Langage relativement sécurisé : il est impossible de lire ou d’écrire sur le disque client (impossibilité de récupérer un virus par ce biais). Arrivée d'AJAX

9 JavaScript Difficultés d’utilisation de JavaScript ? Comme pour HTML, il n’y a pas de standard pour l’accès aux différents objets d’un document (dépendant du navigateur). Si le script ne fonctionne pas, la page est, le plus souvent, inutilisable. Attention au menu non visible ! Les utilisateurs peuvent empêcher l’exécution de code JavaScript, souvent en raison des erreurs générées par les scripts, ou encore en raison de la nature de l’interaction (apparition de nouvelles fenêtres, …). Lenteur d’exécution des scripts, ainsi que pour les scripts complexes, un certain délai avant le démarrage

10 Intégration de JavaScript dans HTML Élément SCRIPT... <!-- // Masquage du code pour les navigateurs // ne supportant pas JavaScript... code JavaScript... //--> // Fin de la partie cachée...

11 Intégration de JavaScript dans HTML Place de l’élément SCRIPT Possibilité d'intégrer du code JavaScript : dans l’entête de la page. dans le corps de la page. Intégration dans un événement d'un objet de la page Sous la forme d’un couple attribut-valeur HTML : Attribut = événement déclencheur Valeur = code JavaScript déclenché Web 2.0

12 JavaScript à l'extérieur du HTML Vincennes-Sud

13 Langage

14 Notations JavaScript Similarités avec les langages C, PHP, Java Commentaire Sur une ligne : // … commentaire … Sur plusieurs lignes : /* … commentaire … */ Séparateur d’instructions Point virgule :instruction ; Groupement d’instructions Accolades : { … instructions … }

15 Déclaration de variables Utilisation de l’instruction var variable=valeur Pas de typage (détection automatique par l’interpréteur) Types atomiques : entier, réel, chaîne de caractères, booléen. Nom de variable sensible à la casse. Portée :déclaration en dehors de fonction  globale déclaration dans une fonction  locale Const existe mais n'est pas standardisée ! Utiliser des majuscules.

16 Déclaration de variables Exemple var prenom_visiteur="Denis"; var nom_visiteur="Dupont"; var age_visiteur=29; // utilisation var accueil="Bonjour " + prenom_visiteur + " " + nom_visiteur; document.write(accueil); Web 2.0

17 Exemple ++ : var total=0; var factor=5; var result=42; var affiche=""; function compute(base,factor){ result = base * factor; factor*=2; var total = result +factor; return total; }// compute affiche+= 'compute(5,4) = ' + compute(5,4); affiche+= '\ntotal = ' +total+ '\n factor =' + factor + '\nresult = ' +result; alert(affiche);

18 Déclaration et création d’objets Existence d’objets prédéfinis JavaScript intègre d'origine plusieurs type d'objets. Déclaration : utilisation de var. Création : utilisation du mot clé new, suivi du type d'objet. Exemple Objet Date, très utile dans un environnement Internet.... // création d’un objet Date contenant la date du jour. var date_jour=new Date(); // création d’un objet Date avec paramètres var une_date=new Date(annee,mois-1,jour,heure,min) ;...

19 Déclaration et création de tableaux Objet Array Déclaration par l’utilisation de var. Le premier élément du tableau est indexé à 0. Il est possible de déclarer un tableau sans dimension fixée. La taille du tableau s'adapte en fonction du contenu. Exemple... // création d’un tableau de 10 éléments de type // basique (réel, entier, chaîne de caractères) var un_tableau=new Array(10) ; // création d’un tableau var un_autre_tableau=new Array;...

20 Utilisation de tableaux Accès aux éléments d’un tableau Utilisation des crochets : [ ] Propriétés de l’objet... var tableau=new Array; tableau[0]=10; tableau[9]=5;... // obtention du nombre d'éléments de un_tableau var dimension=tableau.length;...

21 Tableaux associatifs Principe L’indice est une chaîne de caractères Exemple Chargement d’une page HTML en fonction du jour de la semaine... var tab=new Array; tab["Lundi"]="semaine.html"; tab["Mardi"]="semaine.html "; tab["Mercredi"]="enfant.html"; tab["Jeudi"]="semaine.html"; tab["Vendredi"]="semaine.html"; tab["Samedi"]="weekend.html"; tab["Dimanche"]="weekend.html";...

22 Tableaux d’objets Principe Array permet de stocker des objets de n’importe quel type : atomique : entier, réel, chaîne de caractères, … prédéfini : Date, … défini dans le code JavaScript, … cf. plus loin Exemple var animaux=new Array; // création de plusieurs instances d’Animal var milou=new Animal("Milou","Chien"); var titi=new Animal("Titi","Canari"); // stockage d’instances d ’Animal dans un tableau animaux[0]=milou; animaux[1]=titi; animaux[2]=new Animal("Rominet","Chat");

23 Tableaux multi-dimensionnels Principe Array permet de stocker des objets, donc des tableaux. Exemple... var row0=new Array; row0[0]="O"; row0[1]="X"; row0[2]=" "; var row1=new Array; row1[0]="X"; row1[1]="O"; row1[2]="X"; var row2=new Array; row2[0]=" "; row2[1]="0"; row2[2]="X"; var morpion=new Array; morpion[0]=row0; morpion[1]=row1; morpion[2]=row2;... morpion[1][2]="X";... OX XXO XO

24 Exemple d’utilisation de tableaux Affichage de la date du jour Exemple Date var dt=new Date; var jour=dt.getDay( );// renvoi un jour [0..6] var numero=dt.getDate( ); // renvoi le numéro dans le mois var mois=dt.getMonth( );// renvoi le mois [0..11] var tab_jour=new Array("Dimanche","Lundi","Mardi", "Mercredi","Jeudi","Vendredi","Samedi"); var tab_mois=new Array("Janvier","Février","Mars","Avril","Mai", "Juin","Juillet","Août","Septembre", "Octobre","Novembre","Décembre"); document.write("Nous sommes le "+tab_jour[jour]+" " +numero+" "+tab_mois[mois]);

25 Sortie écran Exemple Exemple 1 var Les4saisons = new Array("printemps", "été", "automne", "hiver"); document.write("Voici les 4 saisons : "); for (var i=0 ; i<4 ; i++) { document.write(" ", Les4saisons[i] ); } document.write(" ");

26 Structures de contrôle

27 Test conditionnel : if … else … But Permet de diriger l’exécution du script selon des conditions. Exemple... if(age<18){ alert("Vous devez être majeur"); window.location="mineur.php3"; } else{ window.location="majeur.php3"; }...

28 Boucle itérative : for … But Répéter des instructions un nombre déterminé de fois. Syntaxe for(initialisation ; condition ; op é ration ) {... instructions... } Exemple var somme=0; for( var i=1 ; i<=10 ; i++ ) { somme += i; // équivalent à somme = somme +i; }... Notations abrégées à la C i++ +=

29 Boucle conditionnelle : while … But Répéter des instructions tant qu’une condition est VRAIE. Syntaxe while(condition) {... instructions... } Exemple function demander() { var nb=0; while(nb<=100) { nb = prompt("Entrez un nombre supérieur à 100"); } alert("Merci !"); }

30 Instructions du langage

31 Sortie écran document.write( … ); Exemple Exemple 1 var bonjour = "Bonjour !"; var question = "Comment allez vous "; var phrase = bonjour + " " + question; document.write(phrase, "aujourd'hui ?");

32 ex2

33 Fonctions Emplacement de la déclaration Dans l'entête de la page Utilisation de la syntaxe : function nom_fonction([param1, …]) Corps de la fonction Délimité par { … } Contenu : déclaration des variables locales, propres à la fonction, instructions réalisés par la fonctions, instruction return pour renvoyer une valeur ou un objet (cette instruction n’est pas obligatoire  fonction qui ne renvoie pas de valeur)

34 Fonctions Appel de fonction Peut avoir lieu à n'importe quel endroit de la page : dans d'autres fonctions, dans le corps de la page. Utilisation de : nom_fonction([param1, … ]); // déclaration de fonction function bonjour(nom) { document.write("Bonjour ", nom);} bonjour("M. Dupont");

35 Fonctions // déclaration de fonction function bonjour(nom) { document.write("Bonjour ", nom);} bonjour("M. Dupont");

36 Fonctions // déclaration de fonctions function volumeSphere(rayon) { return 4/3*Math.PI*Math.pow(rayon,3); } function calculerPrix(PrixUnitaire, NbArticles) { return PrixUnitaire* NbArticles; } // appels des fonctions document.write("Tu dois payer ", calculerPrix(150,4)," Euros. "); document.write("Le volume d’une sphère de rayon 1 est ", volumeSphere(1)," " );

37 Fonctions // déclaration de fonctions function volumeSphere(rayon) { return 4/3*Math.PI*Math.pow(rayon,3); } function calculerPrix(PrixUnitaire, NbArticles) { return PrixUnitaire* NbArticles; } // appels des fonctions document.write("Tu dois payer ", CalculerPrix(150,4)," Euros. "); document.write("Le volume d’une sphère de rayon 1 est ", volumeSphere(1)," " );

38 JavaScript *console // déclaration de fonctions function volumeSphere(rayon) { return 4/3*Math.PI*Math.pow(rayon,3); } function calculerPrix(PrixUnitaire, NbArticles) { return PrixUnitaire* NbArticles; } // appels des fonctions document.write("Tu dois payer ", CalculerPrix(150,4)," Euros. "); document.write("Le volume d’une sphère de rayon 1 est ", volumeSphere(1)," " );

39 Déclenchement d’instructions JavaScript Programmation événementielle JavaScript = langage réactif L’interaction avec l’utilisateur est gérée via des événements Événement = tout changement d’état du navigateur Production d’événement Déclenché par l’utilisateur ou par le code JavaScript

40 Déclenchement d’instructions JavaScript Événements JavaScript blur : le focus est enlevé d’un objet change : la valeur d ’un champ de formulaire à été modifiée par l’utilisateur click :un clic souris est déclenché sur un objet focus :le focus est donné à un objet load :la page est chargée par le navigateur mouseover :la souris est déplacée sur un objet select :un champ de formulaire est sélectionné (par clic souris ou tabulation) submit : un formulaire est soumis unload :l’utilisateur quitte la page

41 Déclenchement d’instructions JavaScript Récupération des événements Gestionnaire d’événement qui associe une action (fonction JavaScript) à la détection d’événement Événements détectables Nom de l’événement précédé de on : onBlur, onChange, onClick, onFocus, onLoad, onMouseover, onSelect, onSubmit, onUnload Association événement - action Dans le code HTML, identique à la déclaration d ’une propriété :

42 Déclenchement d’instructions JavaScript Exemples de déclenchements function saluer() { alert("Bonjour M. Dupont!"); } Exécution immédiate saluer(); Exécution sur événement onClick <INPUT type="button" name="Bouton" value="Salut" onClick="saluer()"> Exécution sur protocole JavaScript: pour saluer

43 JavaScript et mathématiques

44 Test de type Une chaîne est-elle un nombre ? Utile pour la vérification de la saisie de champ de formulaire : saisie de quantités, de prix… isNaN(string chaîne) renvoie : TRUE si la chaîne n’est pas un nombre FALSE sinon Exemple var nombre="3.14"; if(!isNaN(nombre)) document.write(nombre, "est un nombre"); else document.write(nombre, "n’est pas un nombre"); 3.14 est un nombre

45 Conversion chaîne  nombre Utilité Effectuer des opérations numériques sur des données initialement textuelles (cas des saisies de formulaire notamment) int parseInt(string chaîne) : conversion d’une chaîne en entier float parseFloat(string chaîne) : conversion d’une chaîne en réel Exemple var chaine="3.14"; var entier=parseInt(chaine); var reel=parseFloat(chaine); document.write(entier); document.write(reel);

46 Fonctions mathématiques Principe général Appel des méthodes de l’objet Math Listes des méthodes abs(x), acos(x), asin(x), atan(x), cos(x), ln(x), log(x), round(x), sin(x), sqrt(x), tan(x) : applique la fonction appropriée à x ceil(x) : renvoie le plus petit entier supérieur ou égal à x exp(x) : renvoie e (exponentielle) à la puissance x floor(x) : renvoie le plus grand entier inférieur ou égal à x max(x,y) : renvoie la plus grande des valeurs de x et y min(x,y) : renvoie la plus petite des valeurs de x et y pow(x,y) : renvoie x à la puissance y random(x) : renvoie un nombre aléatoire compris entre 0 et 1

47 Fonctions mathématiques Exemple document.write(Math.random()); document.write(Math.min(5,4)); document.write(Math.exp(1)); document.write(Math.ceil(2.2)); document.write(Math.floor(2.2)); document.write(Math.round(2.2)); document.write(Math.pow(2,3));

48 JavaScript et "langage à objets"

49 Déclaration et création d’objets Deux types d’objets Objets prédéfinis Objets propres Création d’objets propres Par appel d’une fonction qui va créer les propriétés de l’objet. Utilisation de this pour faire référence à l’objet courant Exemple var mon_chien=new CreerChien("Milou","Fox Terrier") function CreerChien(le_nom,la_race) { this.nom=le_nom; this.race=la_race; }

50 Déclaration et création d’objets Accès aux propriétés d’un objet Utilisation de la notion pointée : objet.propriété Possibilité de parcourir toutes les propriétés d'un objet Utilisation de la boucle : for (i in object) {... object[i]... } i = nom de la propriété, object[i] = valeur de la propriété Exemple document.write(mon_chien.nom); // parcours des propriétés de l'objet navigator var object=window.navigator; for(i in object) { document.write(i+" = "+object[i]+""); }

51 Déclaration et création d’objets function CreerChien(le_nom,la_race) { this.nom=le_nom; this.race=la_race; } var mon_chien=new CreerChien("Milou","Fox Terrier") document.write(" "+mon_chien.nom +" "); // parcours des propriétés de l'objet navigator var object=window.navigator; for(i in object) { document.write(i+" = "+object[i]+" "); }

52 Déclaration et création d’objets Déclaration de méthodes Association de fonctions dans la création de l’objet. Exemple function CreerChien(le_nom,la_race) { this.nom=le_nom; this.race=la_race; this.Afficher=AfficherChien; } function AfficherChien() { document.write("Ce chien s'appelle "+this.nom +". C'est un "+this.race+"."); }

53 Déclaration et création d’objets Alternative pour la déclaration de méthodes Méthode générique, déclenchable sur un objet quelconque. Exemple function AfficherChien() { with(this) { document.write("Ce chien s'appelle "+this.nom +". C'est un "+this.race+"."); }

54 Modèle Objet de Document

55 Définition Le modèle d'objet du document donne une représentation en mémoire des objet du document. Un objet est un élément HTML qui a été défini par une ID ou un nom. Le DOM est l'adresse par laquelle vous pouvez localiser un objet de la page HTML. Les objets de la page peuvent être identifié par un attribut de nom ou d'ID qui lui donne son adresse unique et en fait un objet.

56 Adresse de l'objet Le DOM décrit le chemin partant de la fenêtre du navigateur pour descendre jusqu'aux objet de la page Web. Le DOM est structuré comme un arbre est suit de près la structure hiérarchique du code HTML. L'arbre contient des nœuds, les nœuds peuvent avoir des fils, et tous les nœuds ont un parent (sauf la racine).

57 Exemple Exemple Le DOM un texte dans le dom.

58 Exemple Le DOM un texte dans le dom.

59 Un arbre ? Document headbody texth1textp i …… HTMLhtml

60 Ce que nous prenons pour des espaces sans signification se retrouve dans le DOM. Les nœuds texte figurant avant H1, entre h1 et P, et après P représentent les lignes vides entre ces éléments.

61 Inspector DOM : inclus dans firefox et mozilla

62

63 Pour obtenir les infos DOM Vous pouvez télécharger la barre d'outils pour Internet Web Developer Toolbar pour Firefox :

d-4511-bb3e-2d5e1db91038&diqplaylang=en&displaylang=en

65 Node C'est une des interfaces incontournable du modèle. Les différents types de nœuds reflétent les différentes catégories de balisage d'un document : éléments, attributs, commentaires, textes. Tous ces types de nœuds partagent un ensemble de propriétés et fonctions héritées de leur type générique : le nœud. Ainsi, toutes les interfaces sur les nœuds disposent des propriétés et méthodes de Node.

66 Propriétés de parcours du DOM Les légumes Artichaud Aubergine carotte Mangue pomme de terre

67

68 Body textH1textUL textLItextLItextLItextLitextLItext

69 Propriétédescription parentNodele nœud père childnodesnœud fil du nœud courant firstChildle premier nœud fil lastChildle dernier nœud previousSiblingle nœud frère précèdent nextSiblingnœud frère suivant

70 Body textH1textUL textLItextLItextLItextLitextLItext header.nextSibling.nodeType == Node.TEXT_NODE legumes.childsNodes.length == 11 n.parentNode.previousSibling.nodeName == #text

71 test <!-- window.onload=function(){ var el=document.getElementById("n"); alert(el.firstChild.nodeValue); alert(el.parentNode.previousSibling.nodeName); } //-->

72 Erreur : <!-- window.onload=function(){ var el=document.getElementById("je_suis_inconnu"); alert(el.firstChild.nodeValue); alert(el.parentNode.previousSibling.nodeName); } //-->

73 JavaScript Console Un clic pour aller sur la ligne erreur (line : 11)

74 Nous sommes à Artichaud

75 Artichaud.parentNode.parentNode.parentNode.nodeName="BODY" NB : a n'est pas artichaud (qui est son fils) donc a.parentNode.parentNode.parentNode.nodeName="HTML"

76 Modèle Objet de Document (DOM) Quid ? Modèle associé à un l’environnement client But Permettre la manipulation des objets : de l’interface du document (objets créés automatiquement par le navigateur) Types d’objets Window, Document, Form, Browser,...

77 Propriétés de noeud NodeName : le nom (par exemple #text) nodeType : valeur numérique souvent à comparer avec les constantes 1 = Node.ELEMENT_NODE 2 = Node.ATTRIBUTE_NODE 3 = Node.TEXT_NODE nodeValue : la valeur !

78 Parcourt dans le DOM function getInnerText(node) { var result = ''; if (Node.TEXT_NODE == node.nodeType) return node.nodeValue; if (Node.ELEMENT_NODE != node.nodeType) return ''; for (var index = 0; index < node.childNodes.length; ++index) result += getInnerText(node.childNodes.item(index)); return result; } // getInnerText

79 DOM : objet Window Propriétés frames[ ] :tableau de frames frames.length :nombre de frames self :fenêtre courante opener :la fenêtre (si elle existe) qui a ouvert la fenêtre courante parent :parent de la fenêtre courante, si la fenêtre courante est une sous-partie d’un frameset top :fenêtre principale (qui a crée toutes les fenêtres) status :message dans la barre de statut defaultstatus :message par défaut de la barre de statut name :nom de la fenêtre

80 DOM : objet Window Méthodes alert(string) :ouvre une boîte de dialogue avec le message passé en paramètre confirm :ouvre une boîte de dialogue avec les boutons OK et cancel blur() :enlève le focus de la fenêtre focus() :donne le focus à la fenêtre prompt(string) :affiche une fenêtre de saisie scroll(int x, int y) :positionnement aux coordonnées (x,y) open(URL, string name, string options) : ouvre une nouvelle fenêtre contenant le document identifié par l’URL close() :ferme la fenêtre

81 DOM : objet Document Propriétés title :titre du document location :URL du document lastModified :date de dernière modification referrer :URL de la page d’où arrive l’utilisateur bgColor :couleur de fond fgColor :couleur du texte linkColor vlinkColorcouleurs utilisées pour les liens hypertextes alinkColor

82 DOM : objet Document Propriétés forms[ ] :tableau des formulaires de la page forms.length :nombre de formulaire(s) de la page links[ ] :tableau des liens de la page links.length :nombre de lien(s) de la page anchors[ ] : tableau des ancres internes ( ) anchors.length :nombre de d’ancre(s) interne(s) images[ ] applets[ ] tableaux des images, applets et plug-ins embeds[ ] Remarque : les tableaux contiennent les éléments dans l’ordre de leur apparition dans le code HTML

83 DOM : objet Document Méthodes write(string) :écrit une chaîne dans le document writeln(string) :idem + caractère de fin de ligne clear() :efface le document close() :ferme le document

84 DOM : objet Form Propriétés name :nom (unique) du formulaire method :méthode de soumission (0=GET, 1=POST) action :action déclenchée par la validation du formulaire target :fenêtre de destination de la réponse (si elle existe) elements[ ] :tableau des éléments du formulaires length :nombre d’éléments du formulaire

85 DOM : objet Form Méthodes submit() :soumet le formulaire reset() :ré-initialise le formulaire Événements onSubmit(method) :action à réaliser lorsque le formulaire est soumis onReset(method) :action à réaliser lorsque le formulaire est ré-initialisé

86 DOM : objet Navigator Propriétés appCodeName :nom de code interne du navigateur appName :nom réel du navigateur appVersion :version du navigateur userAgent :objet complexe contenant des détails sur : l’appCodeName, l’appVersion le système d’exploitation utilisé plugins[] :tableau des plugins installés chez le client mimeType[] :tableau des types MIME supportés par le navigateur

87 DOM : objet Navigator Méthodes javaEnabled :retourne TRUE si le navigateur supporte Java (et que l’exploitation de Java est actif)

88 Exemples d’utilisation du DOM Exemple de formulaire Accès à l’objet correspondant au formulaire précédent 3 possibilités : document.forms["general"] document.forms[0]//si vous voulez vous pendre document.general

89 Exemples d’utilisation du DOM Accès aux éléments du formulaire 3 possibilités : Accès aux propriétés d’un élément document.forms["general"].elements["champ1"] document.forms["general"].elements[0] //voir remarque document.forms["general"].champ1 document.forms["general"].elements["champ1"].value

90 Exemples d’utilisation du DOM Appeler une méthode sur un objet Pour donner le focus, par exemple : Associer une action à un événement <INPUT type="text" name="zonetexte" value="Valeur initiale"> <INPUT type="button" value="Changer la valeur" onClick='document.forms["changer"].elements ["zonetexte"].value="NOUVEAU" '> document.forms["general"].elements["champ1"].focus();

91 Exemples d’utilisation du DOM <INPUT type="text" name="zonetexte" value="Valeur initiale"> <INPUT type="button" value="Changer la valeur" onClick='document.forms["changer"].elements ["zonetexte"].value="NOUVEAU" '>

92 JavaScript Arrivée l'arrivée d'AJAX, la création d'objet DOM a redoublé d'intérêt. Voir cours AJAX.

93 Exemple pour tout regrouper ! hello

94 hello.js window.onload=function() { var hello=document.getElementById('hello'); hello.className='declared'; var empty=document.getElementById('empty'); addNode(empty,"reader of"); addNode(empty,"Ajax in Action!"); var children=empty.childNodes; for (var i=0;i<children.length;i++){ children[i].className='programmed'; } empty.style.border='solid green 2px'; empty.style.width="200px"; } function addNode(el,text){ var childEl=document.createElement("div"); el.appendChild(childEl); var txtNode=document.createTextNode(text); childEl.appendChild(txtNode); }

95 hello.js window.onload=function() { var hello=document.getElementById('hello'); hello.className='declared'; var empty=document.getElementById('empty'); addNode(empty,"reader of"); addNode(empty,"Ajax in Action!"); var children=empty.childNodes; for (var i=0;i<children.length;i++){ children[i].className='programmed'; } empty.style.border='solid green 2px'; empty.style.width="200px"; } function addNode(el,text){ var childEl=document.createElement("div"); el.appendChild(childEl); var txtNode=document.createTextNode(text); childEl.appendChild(txtNode); } Syntaxe Object document.getElementById(String id) Description Retourne un objet HTML à partir de son id, d é fini dans la propri é t é id de la balise de l'objet. Syntaxe Object document.getElementById(String id) Description Retourne un objet HTML à partir de son id, d é fini dans la propri é t é id de la balise de l'objet.

96 hello.js window.onload=function() { var hello=document.getElementById('hello'); hello.className='declared'; var empty=document.getElementById('empty'); addNode(empty,"reader of"); addNode(empty,"Ajax in Action!"); var children=empty.childNodes; for (var i=0;i<children.length;i++){ children[i].className='programmed'; } empty.style.border='solid green 2px'; empty.style.width="200px"; } function addNode(el,text){ var childEl=document.createElement("div"); el.appendChild(childEl); var txtNode=document.createTextNode(text); childEl.appendChild(txtNode); } Syntaxe Object document.createElement(String id) Description Cr é er un nouvel é l é ment HTML en prenant le type de balise en argument. Syntaxe Object document.createElement(String id) Description Cr é er un nouvel é l é ment HTML en prenant le type de balise en argument.

97 hello.js window.onload=function() { var hello=document.getElementById('hello'); hello.className='declared'; var empty=document.getElementById('empty'); addNode(empty,"reader of"); addNode(empty,"Ajax in Action!"); var children=empty.childNodes; for (var i=0;i<children.length;i++){ children[i].className='programmed'; } empty.style.border='solid green 2px'; empty.style.width="200px"; } function addNode(el,text){ var childEl=document.createElement("div"); el.appendChild(childEl); var txtNode=document.createTextNode(text); childEl.appendChild(txtNode); } Syntaxe Object el.appendChild(fil) Description ajoute un n œ ud fil au noeud el.

98 JavaScript et formulaires

99 Rappel sur les formulaires Langage HTML Déclaration de formulaire :... Élément(s) d’un formulaire : But Interaction avec l’utilisateur sous la forme d’une saisie d’informations. Intérêt de JavaScript Augmenter l’interaction du côté client, par exemple pour : assister et guider le visiteur, contrôler la saisie, réaliser des traitements (calcul, …), envoyer des résultats au serveur.

100 Événements associés à onSubmit = " … " Détecte la soumission du formulaire onReset = " … " Détecte la réinitialisation du formulaire

101 Éléments Propriétés name :nom du champ type : type du champ (text, button, radio, checkbox, submit, reset) value : valeur textuelle size : taille du champ maxlength : taille maximale d’un champ texte checked : case à cocher / bouton radio coché ou non disabled : grisé (modification impossible) readOnly : lecture seule class : nom de la classe de style style : nom du style

102 Élément Propriétés acceptées name, value, defaultvalue, size, maxlength, disabled, readOnly, class, style Méthodes acceptées focus, blur Événements acceptés onFocus, onBlur, onChange

103 Éléments Méthodes focus :donne le focus (curseur) blur : enlève le focus click : simule un click (sur un bouton) Événements onFocus : détecte la prise de focus onBlur : détecte la perte de focus onClick : détecte un click onChange : détecte les changements

104 Liste de choix Exemple de liste déroulante Exemple de fichier HTML Ligne 1 Ligne 2 Ligne 3

105 Validation d’un formulaire par JavaScript Intérêt Vérifier les données saisies avant de valider réellement le formulaire. Principe Création d’un bouton de type "button" (et pas de type "submit") pour soumettre le formulaire. Association d’une fonction JavaScript qui contrôle la saisie, soumet ou non le formulaire, à l’événement onClick de ce bouton.

106 Exemple de validation d’un formulaire function ValiderMail(formulaire) { { alert("Adresse mail saisie invalide.\n" ); // le formulaire ne sera pas validé } else{ alert("Formulaire OK\n"); // Pour valider le formulaire en JavaScript : formulaire.submit(); } Saisissez une adresse mail valide : <INPUT TYPE="button" NAME="bouton" VALUE="Valider" onClick="ValiderMail(this.form)">

107 Popup

108 Popup Quid ? Nouvelle fenêtre, dont l’ouverture est déclenchée par des événements liés à l’utilisateur 4 types de fenêtres : string prompt(string chaine) boolean confirm(string chaine) string alert(string chaine) window (appel de la méthode open(...))

109 window.open(URL [, nom] [,options]) Paramètres URL : adresse de la page à charger nom : nom de la fenêtre (utilisable par TARGET) options (séparées par des, ) : toolbar = [ yes | no ] affichage de la barre d’outils location = [ yes | no ]affichage de l’URL de la page directories = [ yes | no ] affichage de la barre le lien status = [ yes | no ]affichage de la barre d’état menubar = [ yes | no ]affichage de la barre de menus scrollbars= [ yes | no | auto ] affichage des ascenseurs resizable = [ yes | no ]fenêtre redimensionnable ou non width = pixels, height = pixelslargeur et hauteur en pixels top = pixels, left = pixels positionnement vertical et horizontal fullscreen = [ yes | no ] affichage plein écran

110 window.open(URL [, nom] [,options]) Exemple // Popup minimaliste, position fixe en haut à gauche window.open('popup.html','','top=10,left=10') // Aucune barre de menu, non redimensionnable, taille fixe window.open('popup.html', '', 'resizable=no, location=no, menubar=no, status=no, scrollbars=no', width=200, height=100') // Popup fullscreen window.open('popup.html','','fullscreen=yes')

111 window.open(URL [, nom] [,options]) Exemples de déclenchements d’ouvertures de fenêtre Fenêtre toujours visible // ouverture au chargement d’une page... // ouverture à la fermeture d’une page... // forcer le focus...

112 JavaScript et chaînes de caractères

113 Utilisation classique Déclaration Utilisation de var, comme n’importe quel type de données Manipulation Beaucoup de similarités avec PHP // 2 alternatives de délimitations var chaine1='valeur1'; var chaine2="valeur2"; // caractères ' et " // alternance de guillemets simples et guillemets doubles chaine1="Bonjour l'ami"; chaine2='Dis "Bonjour" au monsieur'; // utilisation de contre-slashs :\ chaine2="Dis \"Bonjour\" au monsieur";

114 Propriétés associées aux chaînes 1 seule propriété length : longueur de la chaîne Exemple var chaine='Exemple de longueur'; document.write(chaine.length); 19

115 Méthodes associées aux chaînes Concaténation Utilisation de + Exemple var chaine1='Vive '; var chaine2='JavaScript'; var chaine3=chaine1 + chaine2; document.write(chaine3); Vive JavaScript

116 Méthodes associées aux chaînes Accès à une sous-partie d’une chaîne charAt(int n) : renvoie du n ème caractère substring(int i, int j) : renvoie de la chaîne comprise entre le i ème caractère (inclus) et le j ème caractère (exclus) Exemple Remarques L’indice du 1 er caractère est 0 Si (i > j) alors échange de i et j :substring(5,3)  substring(3,5) Si j est omis, la sous-chaîne renvoyée va jusqu’à la fin de chaîne var date = "28/02/2002"; var jour = date.substring(0,2); var mois = date.substring(5,3); var annee = date.substring(6);

117 Méthodes associées aux chaînes Recherche d’une sous-chaîne indexOf(string souschaîne, [int pos]) : renvoie l’indice de la 1 ère occurence de souschaîne dans la chaîne lastIndexOf(string souschaine, [int pos]) : renvoie l’indice de la dernière occurrence de souschaîne dans la chaîne L’option pos permet de n’effectuer la recherche : qu’à partir d’une certaine position pour indexOf jusqu’à une certaine position pour lastIndexOf Si souschaîne n’est pas trouvée, les 2 fonctions renvoient -1

118 Méthodes associées aux chaînes Exemples de recherche de sous-chaînes var date = "28/02/2002"; document.write(date.indexOf("/")); document.write(date.lastIndexOf("/")); document.write(date.indexOf("/",3)); document.write(date.lastIndexOf("/",3)); document.write(date.indexOf("\")); var mois = date.substring(date.indexOf("/")+1, date.lastIndexOf("/")); document.write(mois);

119 Méthodes associées aux chaînes Conversions toUpperCase() : conversion en MAJUSCULES toLowerCase() : conversion en minuscules big(), blink(), bold(), fixed(), italics(), small(), sub(), strike(), sup(), fontcolor(string couleur), fontsize(string taille) : ajout de balises HTML de mise en forme Exemple var chaine="Exemple min/MAJ"; document.write(chaine.toUpperCase()); document.write(chaine.toLowerCase()); document.write(chaine.italics()); document.write(chaine.strike()); document.write(chaine.fontcolor("red")); document.write(chaine.fontsize("+2")); EXEMPLE MIN/MAJ exemple min/maj Exemple min/MAJ

120 JavaScript et Cookies

121 Cookies SetCookie( … ) Positionnement d’un cookie GetCookie( … ) Récupération d’un cookie