DOM et ECMAScript. Nicolas Delaforge Février 2010

Documents pareils
Document Object Model (DOM)

DOM - Document Object Model

Programmation Web. Madalina Croitoru IUT Montpellier

Devenez un véritable développeur web en 3 mois!

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

L'API DOM : Document Object Model

Ajax, RIA et HTML Prise en charge d Ajax

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

les techniques d'extraction, les formulaires et intégration dans un site WEB

BES WEBDEVELOPER ACTIVITÉ RÔLE

Formation : WEbMaster

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Google Tag Manager v2 v1 dispo sur GTM pour les nuls dispo sur

TIC 12 ATELIER INTEGRATION CAHIER DES CHARGES. Page 1/5

TP JAVASCRIPT OMI4 TP5 SRC

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

4. SERVICES WEB REST 46

L A B U S I N E S S. d a t a g i n f o r m a t i o n g a c t i o n

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Le stockage local de données en HTML5

Dojo Toolkit. Créer des applications AJAX/RIA en JavaScript. Thomas Corbière

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Joomla! Création et administration d'un site web - Version numérique

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Dynamisez vos sites web avec Javascript!

SP1 : Intégration d'une vidéo dans une mardi 21/01/2014. page web, fonction du format vidéo et 3 mercredi 22/01/2014

The Mozilla Art Of War. David Teller. 20 septembre Laboratoire d Informatique Fondamentale d Orléans. La sécurité des extensions.

Projet en nouvelles technologies de l information et de la communication

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

novatis Agence Web innovatrice

4D Web 2.0 Pack DATA LIVES HERE. TM. Internet Riche et Solutions Mobiles en toute simplicité. 4D Ajax Framework 4D Ajax for Dreamweaver 4D for Flex

< Atelier 1 /> Démarrer une application web

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Bonnes pratiques de développement JavaScript

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

SYSTÈMES D INFORMATIONS

Sécurité des usages du WEB. Pierre DUSART Damien SAUVERON

Approche Contract First

Vulnérabilités et sécurisation des applications Web

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Introduction aux concepts d ez Publish

INTEGRATEUR WEB/WEBDESIGNER

Optimiser pour les appareils mobiles

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

creer votre site internet en html/css

Introduction à. Oracle Application Express

TP1. Outils Java Eléments de correction

Notes pour l utilisation d Expression Web

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Agence Web innovatrice

Echosgraphik. Ce document sert uniquement à vous donner une vision sur ma manière de travailler et d appréhender un projet

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Karim EL KHALIFA Web developer

Informations générales. Technologies. css3-html5-php-ajax-j-query-mootools-action-script3

Les Content Delivery Network (CDN)

Sélection du contrôleur

LEA.C5. Développement de sites Web transactionnels

Paginer les données côté serveur, mettre en cache côté client

WORDPRESS : réaliser un site web

en 16 différences

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

BIRT (Business Intelligence and Reporting Tools)

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

as Architecture des Systèmes d Information

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Principes d ergonomie des interfaces WEB ( INTERNET / INTRANET )

Autour du web. Une introduction technique Première partie : HTML. Georges-André SILBER Centre de recherche en informatique MINES ParisTech

Programmation Internet Cours 4

et Groupe Eyrolles, 2006, ISBN :

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Petite définition : Présentation :

FICHE TECHNIQUE. Secondaire et postsecondaire

Bureautique Initiation Excel-Powerpoint

( Mauritius ) ( France )

Rapport de stage. Titre : Aide à la conception d interfaces et déploiement d un site d administration de tables SQL Stagiaire : Julien LE GALL

Serveurs de noms Protocoles HTTP et FTP

En date du 11 décembre 2008

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

< _155_0>

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Programmation Web. Introduction

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

SQL Parser XML Xquery : Approche de détection des injections SQL

Démarrer avec Ajax et le php: exemple d'application

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

Un jour, une question Réponse à une problématique issue de la liste GTA *

Master1 ère année. Réseaux avancés I. TP nº5 filière ISICG

Les outils de création de sites web

Transcription:

DOM et ECMAScript Nicolas Delaforge Février 2010

What for? DOM : Document Object Model Recommandation W3C Modélisation objet Nombreuses implémentations (plus ou moins complètes) Standard de la manipulation dynamique de contenu XML/HTML ECMAScript : Langage d interaction ECMA (European Computer Manufacturers Association) est un groupe de standardisation européen. ECMAScript est poussé par Adobe/Microsoft/Yahoo/Mozilla Standard utilisé pour Jscript, Javascript et ActionScript. JSON comme standard Projet Tamarin : machine virtuelle ECMAScript incluse dans Flash et Firefox ECMAScript 4 : base pour Javascript 2 et ActionScript 3 http://www.ecma-international.org/publications/files/ecma-st/ecma-262.pdf

DOM Level 1 Core : Interfaces de bas-niveau qui permettent de représenter la structure arborescente de n importe quel document XML. HTML : Interfaces de haut niveau, basées sur Core Level 1 pour la manipulation simplifiée des documents HTML. Parmi les interfaces introduites dans le DOM 1: Document : racine du DOM Node : Noeud de l arbre Attr : Node de type 2 Element : Node de type 1 Text : Node de type 3

Node, element, attribute? Un nœud XML est découpé de la manière suivante : <div id= fake_id >ceci n est pas du texte</div> Nœud Type CODE div element 1 id= fake_id attribute 2 ceci n est pas du texte text 3 Il existe d autres nodetypes pour les commentaires, les scripts, les entités, etc voir http://www.w3schools.com/dom/dom_nodetype.asp

Quelques trucs à savoir Attention au «mixed content» 1. <people> 2. La liste suivante reprend le nom de certaines personnalités : 3. Un <person name="napoleon Bonaparte" gender="male">empereur</person> bien connu. 4. Ici une <person name="cleopatra" gender="female">reine d'egypte</person> 5. Un <person name="julius Caesar" gender="male">empereur romain</person> 6. Un <person name="ferdinand Magellan" gender="male">explorateur du XVIe</person> 7. Une <person name="laura Secord" gender="female">héroïne canadienne de 1812</person>. 8. </people> Ce document XML est valide. Il contient 27 nœuds (6 noeuds element,10 nœuds attribute, 11 nœuds text). Attention aux espaces blancs pris en compte dans XML pas dans HTML

DOM Level 2 (1/2) Core : extensions des fonctionnalités du DOM Core 1. Views : Ajoute des interfaces dédiées au XML notamment le fameux getelementbyid et les fonctions de gestion des namespaces. permet à des programmes et à des scripts d accéder et de mettre à jour dynamiquement le contenu de la représentation d un document. Events : Les interfaces introduites sont AbstractView et DocumentView. Ajoute un système évènementiel générique pour les programmes et les scripts. Introduction des concepts de flux d évènements (event flow), de phases (capture, bubbling, cancellation). Il inclue notamment les méthodes addeventlistener and handleevent. Interfaces pour la gestion des évènements : EventTarget, EventListener, Event, DocumentEvent, MouseEvent, MutationEvent, etc. Cependant, il n inclue pas d interface pour la gestion du clavier

DOM Level 2 (2/2) Style (CSS) : Mise à jour dynamique du style des éléments. Traversal & Range : DOM Traversal propose de nouveaux moyens pour accéder au contenu de l arbre DOM. Le DOM Range permet la création, l insertion, la modification et la suppression d une plage de contenu dans un document. La sélection est spécifiée par tous les contenus compris entre deux points. Les interfaces principales ajoutées sont : NodeIterator et TreeWalker Les interfaces définies par le DOM Range sont utilisées essentiellement pour gérer précisément la sélection de texte dans un document. HTML : permet aux programmes et aux scripts d accéder et de mettre à jour dynamiquement le contenu et la structure des documents HTM. Il étend les interfaces définies dans le DOM HTML Level 1 en utilisant les possibilités du DOM2 Core. Il introduit la propriété contentdocument pour accéder au document contenu dans une frame.

Diagrammes de classes DOM Core Level 2

DOM Views Les vues du DOM sont les représentations mémoires sur laquelle s appliquent les méthodes de modification dynamique. Deux interfaces ont été définies par le W3C : AbstractView : interface de haut niveau DocumentView L objet document accessible en javascript correspond au DocumentView du navigateur. DocumentView intègre les règles CSS et les Frames. Certaines extensions permettent d observer directement le DocumentView du navigateur Voir DOM Inspector.

DOM Traversal (1/2) NodeIterator Créé une collection de nœuds DOM sélectionnés selon un filtre passé en paramètre. Méthodes du NodeIterator : nextnode() previousnode() TreeWalker Objet dédié au parcours d un arbre DOM sur lequel on applique un filtre. Contrairement au NodeIterator, le TreeWalker respecte la hiérarchie des nœuds. Méthodes du TreeWalker : parentnode(); firstchild(); lastchild(); previoussibling(); nextsibling(); previousnode(); nextnode(); http://www.w3.org/tr/dom-level-2-traversal-range/traversal.html

DOM Traversal (2/2) : Exemples TreeWalker 1. var treewalker = document.createtreewalker( 2. document.body, 3. NodeFilter.SHOW_ELEMENT, 4. { acceptnode: function(node) { return NodeFilter.FILTER_ACCEPT; } }, 5. false 6. ); 7. var nodelist = new Array(); 8. var currentnode; 9. while (currentnode = treewalker.nextnode()) { 10. nodelist.push(currentnode); 11. } NodeIterator 1. var nodeiterator = document.createnodeiterator( 2. document.body, 3. NodeFilter.SHOW_ELEMENT, 4. { acceptnode: function(node) { return NodeFilter.FILTER_ACCEPT; } }, 5. false 6. ); 7. var nodelist = new Array(); 8. var currentnode; 9. while (currentnode = nodeiterator.nextnode()) { 10. nodelist.push(currentnode); 11. }

DOM Level 3, quelques goodies Core : Extension des fonctionnalités du DOM Core 1 et 2. Les nouvelles méthodes et propriétés inclues : adoptnode(), stricterrorchecking, textcontent,... Load & Save : Permet le chargement dynamique d un document XML dans un DOM et la sérialisation du DOM dans un document XML. Validation : Permet de contrôler dynamiquement la validité XML du document. Events : Extension du DOM2 Events. Ajoute la gestion du clavier aux évènements du DOM2. Xpath : Ajoute des méthodes simple pour l accès au DOM en utilisant Xpath.

DOM Events 1/4 Les évènements dans le DOM servent à gérer les interactions. Evènements clavier/souris. Gestion du focus Création d évènements personnalisés. Certains listeners d évènements sont natifs dans HTML Tous les évènements «onmouse», «onkey» Listeners possibles sur la modification du DOM. Les plus utilisés : click, dblclick, mouseover, mousemove, keypress, keyup, load http://en.wikipedia.org/wiki/dom_events https://developer.mozilla.org/en/dom/event

DOM Events 2/4 Propriétés du DOMEvent Permet de connaître le contexte de l évènement Coordonnées de la souris (event.clientx, event.clienty, event.screenx, event.screeny) Bouton de la souris enfoncé (event.button) modifiers enfoncées pendant l évènement clavier (event.ctrlkey ) Selon le contexte, l objet event est toujours passé en paramètre des méthodes de listener. <div onclick="alert(event.button)"> </div>

DOM Events 3/4 La propagation des évènements dans le DOM Trois phases : Capture : l évènement part de la racine (document) et descend l arborescence jusqu à sa cible. Target : l évènement a atteint sa cible Bubble : l évènement remonte jusqu à la racine.

DOM Events 4/4 Exemples : S abonner à un évènement 1. target.addeventlistener(type, listener, usecapture) Intercepter un évènement et arrêter sa propagation 1. event.preventdefault() ou event.stoppropagation() Création d un évènement personnalisé 1. var event = document.createevent(type); 2. element.dispatchevent(event);

Sérialisation XML et Parsing DOM Bien que les fonctions «Load & Save» soient dans la recommandation DOM Level 3, elles ne sont presque jamais implémentées. Firefox propose deux objets non standards : DOMParser 1. var str= <people> </people> ; 2. var parser = new DOMParser(); 3. var dom = parser.parsefromstring(str, "text/xml"); XMLSerializer 1. var serializer = new XMLSerializer(); 2. var xml = serializer.serializetostring(document);

Ajax et Web 2.0 AJAX : Asynchronous Javascript And XML Chaque élément d une page peut communiquer avec un serveur séparément du reste de la page. Implémentations différentes selon les navigateurs XmlHttpRequest dans ECMAScript Msxml2.XMLHTTP dans IE Voir http://fr.wikipedia.org/wiki/xmlhttprequest Nombreuses librairies JS qui simplifient la vie Jquery Prototype ExtJS Dojo Qooxdoo

Exemple : Requête AJAX 1. if(window.xmlhttprequest) { 2. var xhr=new XMLHttpRequest(); 3. if(xhr!=null){ 4. xhr.onreadystatechange=callback; 5. xhr.open("get", 6. "http://localhost:9998/tag/all", 7. true); 8. xhr.send(null); 9. } 10. } 11. function callback(){ 12. if(xhr.readystate==4) { // readystate : 4="loaded" 13. if(xhr.status==200){ // status HTTP 200 = OK 14. alert(xhr.responsetext); 15. } 16. else{ } 17. } 18. }

XPath Langage de requête dans un arbre XML Standard W3C Syntaxe Voir le tutoriel : http://jerome.developpez.com/xmlxsl/xpath/ Attention aux namespaces!! Evaluer une expression XPath en Javascript : var xpathresult = document.evaluate( xpathexpression, contextnode, namespaceresolver, resulttype, result );

Pointeurs utiles Tutoriels DOM http://www.javascriptkit.com/javatutors/ DOM http://www.toutjavascript.com/savoir/ Parsing XML https://developer.mozilla.org/en/parsing_and_serializing_xml RegExp http://www.commentcamarche.net/contents/javascript/jsregexp.php3 RegExp http://www.toutjavascript.com/savoir/savoir22.php3 Xpath http://jerome.developpez.com/xmlxsl/xpath/ POO en Javascript http://t-templier.developpez.com/tutoriel/javascript/javascript-poo1/ POO en Javascript http://t-templier.developpez.com/tutoriel/javascript/javascript-poo2/ POO en Javascript http://t-templier.developpez.com/tutoriel/javascript/javascript-poo3/ Référence CSS http://www.w3schools.com/css/css_reference.asp Javascript http://www.toutjavascript.com/reference/ Gecko DOM Reference https://developer.mozilla.org/en/gecko_dom_reference Outils Console Javascript Firefox chrome://global/content/console.xul Firebug : extension Firefox https://addons.mozilla.org/fr/firefox/addon/1843 Evaluateur XPath http://b-cage.net/code/web/xpath-evaluator.html

ANNEXES Goodies et bonnes pratiques en développement web

Séparation fond/forme XHTML : Mauvais standard? Mauvaise granularité Tendance à tout mélanger <style>#warning{ background-color:red;}</style> <script type= text/javascript > document.write( Hello world! ); </script> <div style= background-color:red > </div> Les bonnes pratiques Externaliser les scripts dans des fichiers JS et utiliser des objets Externaliser les CSS et utiliser @import Utiliser les classes et id HTML <div id= warning > </div> et #warning{ background-color:red;}

RegExp en Javascript Javascript implémente les expressions rationnelles L objet RegExp : var reg = new RegExp(String motif[, String type]); Méthodes de l objet RegExp : compile() (Modifie le motif d'une expression régulière) exec() (Retourne la première sous-chaîne correspondant au motif) test() (Teste l'expression régulière sur une chaîne) Autres méthodes de String basées sur des RegExp : Match Split Replace

POO en Javascript POO par prototype Cycle de vie des objets lié à la page HTML Les «objets» sont des tableaux associatifs var obj = new Object(); ou var obj = {}; obj["attribut"] = "valeur1"; obj["methode"] = function(param1, param2){ }; alert(obj.attribut); obj.methode("v1", "valeur2");