Introduction
Bien que le HTML est utilisé afin de garder les données et le format d'une page web et que le CSS encode le style de page, déterminant comment le contenu formaté de la page devrait être affiché graphiquement, JavaScript est utilisé dans le but de créer de jolis effets ou des applications web riches en contenu. Cependant, le terme "JavaScript" tel que compris dans le contexte d'un navigateur web contient plusieurs éléments différents. Ceux-ci sont, entre autres, le langage-noyau (ECMAScript) et le DOM (Document Object Model, ou Modèle d'Objet du Document).
JavaScript, le langage-noyau (ECMAScript)
Le langage-noyau du JavaScript fut standarisé par le comité ECMA TC39 en tant que langage nommé ECMAScript. Il est spécifié depuis sa dernière version par le nom d'ECMAScript 5.1.
Quels sont les caractéristiques de l'ECMAScript?
Parmi plusieurs autres éléments, ECMAScript défini :
- La syntaxe du langage (Règles de parsage, mots-clés, contrôle de flux, initialisation littérale d'objets...)
- Le mécanisme de traitement d'erreurs (throw, try/catch, capacité qu'a l'utilisateur à créer des types d'erreurs personnalisés)
- Les types de variables (boolean, number, string, function, object...)
- L'objet global. Dans l'environnement d'un navigateur, cet objet global est l'objet fenêtre. Plusieurs fonctions y sont attachées (parseInt, parseFloat, decodeURI, encodeURI...)
- Un mécanisme d'héritage basé sur le concept de prototypes.
- Les objets pré-construits et les fonctions (JSON, Math, méthodes de Array.prototype, méthodes d'introspection d'objet...)
- Le mode strict.
Support sur les navigateurs
Depuis Avril 2013, les versions courantes des navigateurs web principaux supportent ECMAScript 5.1, mais leurs versions antérieures utilisent encore ECMAScript 3 ainsi que certaines fonctionnalités de ECMAScript 5. Certaines resources documentent le support d'ECMAScript 5 sur les navigateurs web.
Futur
La 4e version de l'ECMA-262 (ECMAScript 4 ou ES4) aurait été la première mise à jour majeure d'ECMAScript depuis la publication de sa 3e édition en 1999. Depuis Août 2008, la proposition d'une 4e édition d'ECMAScript s'est transformé en un projet au nom de code ECMAScript Harmony qui définit, entre-autres, des éléments tels que les Proxys ou le mot-clé const. Son progrès peut être suivi ici.
Internationalisation de l'API
La ECMAScript Internationalization API Specification est un ajout à la spécification du langage ECMAScript, aussi standardisé par ECMA TC39. l'API d'internationalisation a apporté la collation (comparaison entre chaînes de caractères), formattage de valeurs de nombre, date et temps pour les applications JavaScript, et permet aux applications de choisir le langage et de créer des fonctionnalités sur mesure par rapport aux besoins requis. Ce standard a été aprouvé en Décembre 2013; son status d'implémentations dans les navigateurs est traité dans la documentation de l'objet Intl.
Le DOM (Document Object Model)
WebIDL
Les spécifications WebIDL apporte le lien entre les technologies DOM et ECMAScript.
Le noyau du DOM
Le Modèle d'Objet du Document (DOM) est une convention multi-plateformes et indépendant de langage pour représenter et interagir avec les objets dans les documents HTML, XHTML et XML. Les objets dans l'arbre DOM peut [etre adress/ et manipul/ en utilisant des méthodes sur les objets. Le Modèle d'Objet du Noyau du Document fut standardisé par le W3C. Il défini les interfaces indécis de langage qui font abstraction des documents HTML et XML en tant qu'objets et en tant que mécanismes afin de manipuler cette abstraction. Parmi les éléments définis par le DOM, on peut y trouver:
- La structure du document, un modèle d'arbre et l'architecture d'évènements DOM dans le noyau DOM: Node, Element, DocumentFragment, Document, DOMImplementation, Event, EventTarget, …
- Une définition moins rigoureuse de l'architecture d'évènements DOM, ainsi que des évènements spécifiques dans les évènements DOM.
- D'autres éléments tels que le DOM Traversal et le DOM Range.
HTML DOM
HTML, le langage de balisage du Web, est spécifié en termes de DOM, les couches au-dessus des concepts abstraits définies dans DOM Core, HTML définit également la signification des éléments. Le DOM HTML inclut des choses telles que la propriété className sur des éléments HTML, or des APIs telles que document.body.
La spécification HTML défini aussi les restrictions sur les documents; par exemple, un document requierait à ce que tous les enfants d'un élément ul (une liste non-ordonnée) puisse être des éléments li, puisqu'ils représentent les objets d'une liste. En général, cela peut aussi empêcher l'utilisation d'éléments et d'attributs qui ne furent pas définis dans un certain standard.
Vous cherchez l'objet Document, l'objet Window, et tous les autres éléments du DOM? Lisez la Documentation Gecko DOM.
D'autres APIs à mentionner
- Les fonctions
setTimeoutetsetIntervalont été primordialement spécifiées dans l'interface Window dans le standard HTML. - XMLHttpRequest. Un API permettant d'envoyer des requêtes HTML asynchronisées.
- CSS Object Model. Le CSSOM est utilisé pour rendre les règles abstraites du CSS en objets.
- WebWorkers. Un API qui permet d'effectuer des calculs parallèles.
- WebSockets. Un API qui permet d'effectuer des communications bi-directionnelles de bas-niveau.
- Canvas 2D Context. Un API de dessin pour l'élément canvas.
Support entre les Navigateurs
Tous les développeurs webs ont compris, par expérience, que le DOM est mal-organisé. L'uniformité du support entre les navigateurs web varient beaucoup entre chaque caractéristiques. La raison principale à cette situation est dû au fait que plusieurs des particularités importantes du DOM ont eu des spécifications très peu claires, et ce, s'ils en ont déjà. Aussi, différents navigateurs web ont ajoutés des fonctionalités incompatibles afin de chevaucher les cas d'utilisations (comme dans le modèle d'évènements d'Internet Explorer). La tendance courante (à compter de Juin 2011) est que le W3C et particulièrement le WHATWG sont entrain de définir d'anciennes fonctionalités en détails afin d'améliorer l'interopérabilité. Suivant cette tendance, les navigateurs améliorent leurs implémentations basé sur ces spécifications.
Un des techniques les plus courantes, bien que peut-être non la plus fiable, dans le développement de la compatibilité multi-navigateurs est d'utiliser des librairies JavaScript. Ces librairies font abstraction des fonctions du DOM et font en sorte à ce que leur APIs puisse fonctionner correctement dans différents navigateurs. Les librairies des plus utilisées sont jQuery, prototype et YUI.