Survol des technologies JavaScript

Introduction

HTML est utilisé pour définir la structure et le contenu d'une page web, CSS permet de définir la mise en forme, le style graphique avec lequel afficher le contenu. JavaScript permet quant à lui d'ajouter des fonctionnalités d'interaction pour créer des applications web riches en contenu.

Cependant, le terme « JavaScript » au sens large regroupe divers éléments très différents : le langage cœur (ECMAScript) d'une part et les API Web d'autre part et notamment le DOM (Document Object Model, ou Modèle d'Objet du Document).

JavaScript, le langage (ECMAScript)

Le langage JavaScript (au sens strict) est standardisé par le comité ECMA TC39 sous la forme d'un langage intitulé ECMAScript.

Ce langage est aussi utilisé dans des environnements différents des navigateurs web, comme par exemple dans node.js.

Quelles sont les caractéristiques d'ECMAScript?

Entre autres choses, ECMAScript définit :

  • La syntaxe du langage (règles d'interprétation (parsing), mots-clés, flux d'instructions, initialisation littérale d'objets...)
  • Le mécanisme de traitement d'erreurs (throw, try...catch capacité qu'a l'utilisateur de créer des types d'erreurs personnalisés)
  • Les types de variables (booléen, nombre, chaîne de caractères, fonction, objet...)
  • L'objet global. Dans l'environnement d'un navigateur, cet objet global est l'objet window. ECMAScript ne définit ici que les API accessibles depuis l'objet global (peu importe l'environnement qui peut être différent d'un navigateur) (par exemple parseInt(), parseFloat(), decodeURI(), encodeURI()...)
  • Le mécanisme d'héritage basé sur le concept de prototype
  • Les objets et fonctions natifs (JSON, Math, méthodes de Array.prototype, méthodes d'introspection d'Object...)
  • Le mode strict.

Support des navigateurs

En octobre 2016, les versions actuelles des principaux navigateurs web supportent ECMAScript 5.1 et ECMAScript 2015 (aussi appelé ES6) mais certaines anciennes versions n'implémentent que ECMAScript 5.

Futur

La sixième édition majeure d'ECMAScript a été officiellement approuvée et publiée en tant que standard le 17 juin 2015 par l'assemblée générale ECMA. Depuis cette édition, les éditions ECMAScript sont publiées à un rythme annuel.

API d'internationalisation

La spécification ECMAScript pour l'API d'internationalisation est un ajout à la spécification du langage ECMAScript, également standardisée par ECMA TC39. L'API d'internationalisation ajoute la collation (c'est-à-dire la comparaison entre chaînes de caractères), le formatage de nombres, dates et heures dans les applications JavaScript en prenant en compte la locale de l'utilisateur pour fournir le meilleur format. Le standard initial a été aprouvé en décembre 2012 ; le statut de son implémentation dans les différents navigateurs est disponible sur la page de l'objet Intl. La spécification d'internationalisation est également ratifiée annuellement et les navigateurs améliorent leur implémentation au fur et à mesure.

Les API du DOM (Document Object Model)

WebIDL

La spécification WebIDL fournit le lien entre les technologies DOM et ECMAScript.

Le cœur du DOM

Le Modèle d'Objet du Document (Document Object Model ou DOM en anglais) est une convention multi-plateforme, indépendante du langage utilisée pour représenter et interagir avec les objets dans les documents HTML, XHTML et XML. Les objets de l'arbre du DOM peuvent être accédés et manipulés en utilisant des méthodes sur les objets. Les fonctionnalités principales du DOM sont standardisées par le W3C. Il définit les interfaces offertes par les documents HTML et XML sans cibler un langage de manipulation précis. Parmi les éléments définis par le DOM, on peut trouver:

Du point de vue d'ECMAScript, les objets définis dans la spécification DOM sont appelés des « objets hôtes ».

Le DOM HTML

HTML, le langage de balisage du Web, est spécifié en termes de DOM. Comme une couche au-dessus des concepts abstraits définis 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, ou des API telles que document.body.

La spécification HTML définit aussi les restrictions sur les documents ; par exemple, elle requiert que tous les enfants d'un élément <ul> (une liste non-ordonnée) soient des éléments <li>, puisqu'ils représentent les éléments d'une liste. En général, cela interdit aussi l'utilisation d'éléments et d'attributs qui ne sont pas définis dans un certain standard.

Si vous cherchez la documentation sur l'objet Document, l'objet Window ou sur les autres éléments du DOM, vous pouvez lire la documentation relative au DOM.

D'autres API fréquemment utilisées