En 1992 Nombas conçut Cmm (C moins moins) langage de script assez simple et puissant pour remplacer les macros langages. Le premier navigateur de Netscape fut commercialisé (1994) avec une version dérivée de Cmm capable d'interpréter de courts scripts à l'intérieur de pages Web. L'intérêt d'une interaction dynamique côté client n'échappa pas à Netscape qui développa son propre produit LiveScript (1995), renommé JavaScript dans sa version finale pour profiter de l'effet Java. En quelques mois, JavaScript fut dix fois plus utilisé que Java sur le Web. En 1996, Microsoft ajoute JavaScript à son navigateur sous le nom de JScript, Netscape modifie JavaScript à chaque nouvelle version de Navigator et Nombas continue à développer ScriptEase (nouvel avatar de Cmm) pour tout ce qui n'est pas browsers. La confusion du langage étant totale, l'organisme de normalisation ECMA, les compagnies citées plus haut et quelques autres, créent en 1997 ECMAScript, spécification standard du langage.
Côté client, tous dialectes confondus, il s'agit d'un langage embarqué dans la page HTML, dont les scripts sont interprétés par le browser. Avec moins de capacités que les langages comme C++ (dont il a une syntaxe proche mais moins rigoureuse), c'est un langage orienté objet puissant qui n'est la version simplifiée d'aucun autre. Ses limites ne lui permettent ni d'écrire des applications autonomes ni de lire ou d'écrire des fichiers (encore heureux côté client !). Faiblement typé (mais capable d'effectuer les conversions nécessaires), il peut intervenir sur tous les éléments d'une page Web et réagir aux événements (clavier, souris) générés par le client. Les erreurs de syntaxe ne sont pas fatales et n'interrompent que le script qui les contient.
Netscape Navigator | Internet Explorer |
Nav 2.0 => JavaScript 1.0 Nav 3.0 => JavaScript 1.1 Nav 4.0-4.05 => JavaScript 1.2 Nav 4.06-4.7x => JavaScript 1.3 Nav 4.5 => compatible ECMA-262 Nav 6.0 (Mozilla) => JavaScript 1.5 Nav 7.0 (Mozilla) => JavaScript 1.5 |
IE 3.0 => JScript 1.0 IE 3.02 => JScript 2.0 IE 4.0 => JScript 3.0 IE 4 => compatible ECMA-262 IE 5.0 => JScript 5.0 IE 6.0 => JScript 5.6 |
Côté serveur, JavaScript peut être utilisé pour
générer dynamiquement des pages avec
Enterprise Server de Netscape, Internet Information Server (IIS) de Microsoft,
Intra Builder de Inprise (ex Borland).
Le DOM (Document
Object Model) est une API (Application Programming Interface) qui définit
les propriétés, méthodes et comportements de tous les constituants
d'une pages Web. La place de chaque élément est définie
dans une hiérarchie arborescente. L'arbre du document est constitué
de collections ordonnées d'éléments dont chacun est un
objet.
Chaque objet est accessible par un nom (défini par l'attribut
"name" ou "id") ou par un numéro dans une collection.
Par
exemple l'objet "window" contient l'objet "document" qui
contient la collection "images".
Si <img name="Photo1"
src="matin.jpg"> est la première image d'une page
Web, on pourra l'atteindre par window.document.image[0]
ou par window.document.Photo1
Avec le niveau 1 du DOM, le W3C
définit
une interface indépendante de la plate-forme et du
langage qui permet aux programmes et aux scripts d'atteindre et de modifier
dynamiquement le contenu, la structure et le style d'un document. Le DOM fournit
un ensemble d'objets standards pour représenter les documents HTML et
XML, un modèle standard de la manière dont ces objets peuvent
être associés, et une interface standard pour les atteindre et
le manipuler. Pratiquement il existe trois DOM :
Afin d'atteindre une meilleure "interopérabilité" sur le Web,
le W3C conseille aux commerciaux (vendors)
d'utiliser le DOM comme interface à leurs API et structures de données
proprétaires, et aux auteurs de s'adresser aux interfaces DOM standard
plutôt qu'aux API spécifiques. Ces conseils de sagesse ne semblent
pas suivis avec empressement et l'écriture de scripts multi plates-formes
reste une excellente école d'endurance parfois couronnée de succès.
L'objet
navigator permet de lire les caractéristiques
du navigateur qui utilise la page Web. Néanmoins, plutôt que de
faire des choix en terme d'Internet Explorer, Netscape, Mozilla, Opera,
K-Meleon, Skipstone, Galeon, Konqueror ... ou Lynx, il est plus simple et efficace
de le faire à partir de l'approche des objets du DOM.
Utilisation de l'objet navigator | |
var browser = 0; var agent = navigator.userAgent.toLowerCase(); if (agent.indexOf ( 'opera') != -1 ) browser = 3; else if (agent.indexOf ( 'msie') != -1 ) browser = 1; else if (agent.indexOf ( 'mozilla') != -1 ) browser = 2; |
Un grand nombre de navigateurs
dont Internet Explorer et Opera contiennent la chaîne mozilla
dans leur nom de code. L'ordre des tests a son importance. Le code 0 correspond à un autre navigateur. |
Utilisation de l'objet document | |
var browser = 0; if (document.all) browser = 1; else if (document.layer) browser = 2; else if (document.getElementById) browser = 3; |
all et layer
caractérisent respectivement Internet Explorer et Netscape. getElementById est du JavaScript classique (reconnu par IE, Gecko, Netscape, Mozilla ...). |
Il ne paraît pas inutile de réfléchir aux questions suivantes :
Références du
W3C
Apprendre
JavaScript (W3C)
Retour
au début