5) JavaScript, JScript, ECMAScript (Exercices de JavaScript)

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