Vous devez activer Javascript pour accéder à ce site
 

Semaine

RECHERCHE

DOM : JavaScript et autres langages

DOM et ECMAScript

ECMAScript est un langage similaire au Java quant à sa syntaxe de base et qui s'exécute souvent dans un navigateur. Il fut inventé par Netscape en 1995 sous le nom de JavaScript. Il s'agit d'une norme de l'European Computer Manufacturers Association (ECMA) depuis 1997. L'implémentation du ECMAScript que l'on retrouve dans le navigateur Firefox ou Google Chrome se nomme toujours JavaScript, alors que Microsoft nomme son implémentation JScript. L'ECMAScript n'est pas une forme de Java, même s'ils ont une ressemblance superficielle, adoptant tous les deux une syntaxe proche du langage C. Il existe de nombreux tutoriels sur le ECMAScript incluant le tutoriel de Jean-Paul Davalan se trouvant à l'URL http://perso.wanadoo.fr/jean-paul.davalan/lang/jsc/ ou encore le tutoriel de commentcamarche.net. Le site xul.fr offre un résumé du langage, le site mozilla.org offre une description complète du langage (en anglais). Si vous ne connaissez pas le langage ECMAScript, vous devriez prendre quelques instants pour en faire un survol.

Les implémentations ECMAScript supportent bien l'API DOM en général. La documentation de l'API DOM pour l'implémentation de ECMAScript se trouve à l'adresse http://developer.mozilla.org/en/docs/Gecko_DOM_Reference. La principale différence entre DOM en ECMAScript et DOM en Java est que certaines méthodes en Java deviennent des attributs en ECMAScript (getNodeValue() devient nodeValue).

ECMAScript peut donc lire et traiter des documents XML avec l'API DOM. En particulier, si ECMAScript est utilisé au sein d'une page XHTML, le script peut modifier la page dynamiquement en utilisant l'API DOM. La principale différence entre l'utilisation de DOM en Java et ECMAScript est qu'à l'exception des méthodes getAttribute, setAttribute, getAttributeNS, setAttributeNS, getAttributeNode, setAttributeNode, getAttributeNodeNS, setAttributeNodeNS, getElementsByTagName et getElementById, toutes les méthodes dont le nom commence par « get » ou « set » sont remplacées par un attribut de l'objet (ou « property » en anglais). Au lieu d'écrire « e.getChildNodes(); », on écrit « e.childNodes; », au lieu d'écrire « e.setNodeValue("texte"); », on écrit « e.nodeValue="texte"; », et ainsi de suite.

Par exemple, le script suivant va ajouter du texte lorsque la souris passera sur l'élément ayant un attribut « id='javatest' »..

monele=document.getElementById('javatest'); 
monele.childNodes.item(0).nodeValue+=' (passage de souris) ';

DOM et autres langages

L'API DOM est supportée en C++ (voir Xerces-C), en Python (paquetage xml.dom), en Perl (voir Xerces-P), en ECMAScript, etc. C'est d'ailleurs la principale force de cette API : peu importe le contexte, il y a fort à parier que vous aurez accès à l'API DOM. Ce n'est sans doute pas la meilleure API possible, mais son ubiquité fait en sorte qu'il vaut la peine d'apprendre à la connaître.


© Daniel Lemire, 2014. Tous droits réservés.