Tout sur le Javascript !
Last updated on Monday, January 7, 2013

Ce cours est visible gratuitement en ligne.

Got it!

Présentation

Avant de nous lancer dans des lignes de code, je vous ai préparé un petit avant-propos qui ne vous fera aucun mal ;) . Vous en apprendrez un peu plus sur le JS (JavaScript), et nous ferons par la même occasion un peu d'histoire.
Ce chapitre n'est pas placé en annexe car il apporte des éléments importants : prenez donc le temps de le lire.

Le JavaScript : c'est quoi ?

Qu'est-ce que c'est ?

Définition

Le JavaScript est un langage de programmation.
Pour être plus précis, c'est un langage orienté objet : quand on code en JavaScript, on se base sur des objets. Je n'en dis volontairement pas plus pour l'instant, car ce sujet sera abordé un peu plus loin, lorsque vous aurez déjà acquis les connaissances requises.

Pour une définition plus complète, voici un "remix" de ce que nous propose notre ami Google :

Citation : Google, define: JavaScript

Le JavaScript est un langage de script basé sur la norme ECMAScript.
Il s'insère dans le code (x)HTML d'une page web, et permet d'en augmenter le spectre des possibilités.
Ce langage de POO [Programmation Orientée Objet], faiblement typé, est exécuté côté client.

Je l'avoue, c'est très compliqué... Mais pas de panique, nous allons aborder les différents points de cette définition au fil du tuto.

Utilisation

Tout d'abord, plantons le décor : de quelle manière s'utilise-t-il ?
Sa principale utilisation est, comme je vous l'ai dit, à l'intérieur des pages web : on dit alors que le JavaScript est une extension du (x)HTML. Il permet de rendre celles-ci interactives.
Voici quelques exemples (on pourrait en citer beaucoup d'autres) de ce que l'on peut en faire dans une page Web :

  • ouvrir des pop-up (les petites fenêtres qui s'ouvrent de manière intempestive)

  • faire défiler un texte

  • insérer un menu dynamique (qui se développe au passage de la souris)

  • proposer un diaporama (changement d'image toute les X secondes, boutons pour mettre en pause, aller à l'image précédente / suivante, etc.)

  • avoir une horloge "à aiguilles" (avec la trotteuse)

  • faire en sorte que des images suivent le pointeur de la souris

  • créer de petits jeux (comme le classique "Plus ou Moins", cf. TP)

  • insérer des balises du zCode (les balises qui apparaissent en cliquant sur le bouton)

  • faire un aperçu du zCode en direct.

Vous voyez que les possibilités sont donc nombreuses (le JavaScript sert en effet beaucoup sur ce site).
Il ne faut cependant pas "polluer" son site avec trop de scripts inutiles... Les pop-up ou les images qui suivent la souris partout peuvent agacer le visiteur, et "charger" un site, si bien qu'il est difficile d'accéder clairement aux informations qu'il propose...

L'utilisation du JavaScript ne se limite toutefois pas aux pages web : étant un langage pratique à mettre en oeuvre (il suffit d'un navigateur et d'un éditeur de texte tel que Bloc-notes), il s'est répandu et se répand ailleurs.
Un exemple : vous pouvez créez vos propres plugins pour Messenger Plus! Live en JScript (c'est JavaScript à quelques différences près).
Il est également possible de faire facilement de petites "applications" en DHTML !

Attends, c'est quoi le DHTML ? o_O

Le DHTML (Dynamic HyperText Markup Language) désigne des pages dont le contenu (ou la mise en forme) est modifié sans avoir à recharger la page. (Ce terme n'a pas de définition officielle du W3C.)
C'est bien le cas des exemples cités ci-dessus : on modifie une image, on la déplace, on fait défiler du texte, ...

Un peu d'histoire ...

Le JavaScript, inventé par un certain Brendan Eich et développé par Netscape, fait son apparition en 1995, sous le nom de LiveScript, dans le but de dynamiser les pages web.
Son utilisation s'est largement répandue, et il se fait rapidement accepter par d'autres navigateurs.
Il est aujourd'hui très présent sur les sites web : de plus en plus de webmasters s'y intéressent, et il est de mieux en mieux accepté, à la fois par les navigateurs et par les visiteurs ; ce qui lui réserve sans doute un bel avenir...

Les caractéristiques du JavaScript

Voici un petit résumé de ce que l'on a déjà pu dire à propos des caractéristiques du JS. Ceci est à retenir.

  • C'est un script (cf. juste après).

  • C'est un langage orienté objet, comme je vous l'ai déjà dit (nous y reviendrons).

  • Le code n'est pas compilé :

    • il est donc plus rapide à produire (pas besoin de compilateur, un seul fichier, ...),

    • mais il est moins puissant qu'un programme en C, par exemple,

    • et relativement limité : il se limite plus ou moins à la page web sur laquelle il se trouve. Il ne permet donc pas de faire des choses comme manipuler des fichiers sur votre disque dur (heureusement ^^ ) ; seulement des choses assez simples.

  • Il est exécuté par le navigateur du visiteur (le client), et dépend donc de celui-ci.

  • Il est déterminé par une norme, nommée ECMA-262 ou ECMAScript. De la même manière que le W3C se charge de définir clairement le (x)HTML, le JS possède une norme qui fixe également des lois et des limites pour celui-ci, rendant ainsi ce langage plus "officiel". Ainsi, le code est plus facile à écrire, car il y a beaucoup moins de problèmes de compatibilité. Il y a cependant pour le JS quelques différences d'un navigateur à l'autre (des fonctions de l'un qui ne marchent pas sur l'autre, ...), mais cela n'a pas beaucoup de conséquences.

Comment ça marche ?

Primo : un script

Un script ? :o

Oui, script, comme dans JavaScript...

Comme beaucoup de mots d'utilisation usuelle (ici dans le milieu de l'informatique), script a deux sens : l'un, qu'on pourrait qualifier de "global", l'autre de strict.

La définition la plus simple est la définition globale, celle qu'on utilise tout le temps et qui pourtant ne veut rien dire :
un script, c'est tout simplement un bout de code JavaScript qui a une tâche précise.
Dès que l'on parlera de script, ce sera pour désigner le code que l'on aura inséré à notre page Web.

Mais, si ça n'a pas vraiment de sens, c'est parce que la véritable signification du mot script en informatique est bien plus rigoureuse.

Grosso modo, pour faire simple, un script est, par opposition à un langage compilé, un langage qui s'interprète. Ici, l'interprète du JavaScript, c'est le navigateur du visiteur (le client).

Cette dernière définition, nous ne l'utiliserons sûrement presque pas : dès qu'on a compris, ça ne sert plus vraiment à grand-chose de le savoir.

L'intérêt des scripts est sans doute leur manière d'être utilisés : en effet, ils ne sont pas obligatoirement exécutés au chargement de la page. Ils sont lancés lorsqu'un événement spécifique se produit.
Pour illustrer ceci, voici quelques exemples d'événements qui peuvent se dérouler lors de la visite d'une page Web :

  • lorsque vous chargez la page (exemple : ouvrir un pop-up)

  • lorsque vous changez de page (un autre pop-up :-° )

  • lorsque vous cliquez sur un lien (vous aimez les pop-up ? :p )

  • lorsque vous sélectionnez un élément d'un menu déroulant (vous serez par exemple redirigé vers une autre page)

  • lorsque vous validez un formulaire (avant qu'il soit envoyé : vous pouvez alors vérifier si les champs sont correctement remplis).

Et vous vous retrouvez avec un site très interactif : vous ne pouvez plus bouger la souris sans déclencher un script ;) .
Ceci étant, ce n'est pas un très bon exemple. Je l'ai peut-être déjà dit, mais les pop-up qui s'ouvrent tout le temps, et les scripts à n'en plus finir, c'est chiant très agaçant ( :-° ).

Secundo, un client

Un client ? :o

Oui, un client (ou encore visiteur, enfin celui qui visite la page web en question).
Vous avez peut-être déjà rencontré ce mot (dans le sous-chapitre précédent), mais quelques explications s'imposent tout de même...

Si vous avez suivi les cours sur le PHP, vous devriez savoir que celui-ci est exécuté côté serveur.
Autrement dit, vous demandez au serveur de vous donner une page (par exemple la page d'accueil du SdZ) : il va lire cette page, exécuter le code PHP et vous donner la page ainsi générée.

Eh bien en JavaScript, ce n'est pas comme ça.
Vous demandez la page au serveur : il vous la donne (après avoir exécuté les éventuels scripts PHP), et c'est votre navigateur qui exécute le script (soit immédiatement, soit lorsqu'un événement précis se produit).

Schématiquement, pour ceux qui justement n'y connaissent rien en PHP, voici comment ça marche :

Schéma du processus d'interprétation d'un script

votre ordinateur récupère le code source de la page en question. Votre navigateur interprète la page et les scripts qu'elle contient. La page formatée s'affiche sur votre écran. Les scripts, quant à eux, sont mis en mémoire et seront lancés dès que l'événement attendu se produira.
Et ça change tout !
Comme c'est votre navigateur qui exécute le script, il a donc accès au code de celui-ci (sinon comment ferait-il pour l'exécuter ? :-° ). Et si votre navigateur y a accès... vous pouvez vous aussi y avoir accès (pour les curieux, c'est dans la source de la page, entre les balises (x)HTML, comme nous l'apprendrons rapidement).

  1. votre ordinateur récupère le code source de la page en question.

  2. Votre navigateur interprète la page et les scripts qu'elle contient.

  3. La page formatée s'affiche sur votre écran. Les scripts, quant à eux, sont mis en mémoire et seront lancés dès que l'événement attendu se produira.

Les scripts d'une page ne vous plaisent pas ? Qu'à cela ne tienne : il suffit par exemple de désactiver le JavaScript (parmi les options du navigateur web)...

JavaScript et Java

JavaScript n'est pas Java !

Je termine avec un point important (comme diraient nos confrères anglais, "Last, but not least" ^^ ) :

J'insiste sur ce point. C'est une confusion courante, mais ces langages sont totalement différents. Le Java a été développé par Sun Microsystems au début des années 90.
Pour vous donner une idée, le langage Java serait plus proche du C++ que du JavaScript.

  • Le JavaScript est placé directement dans le code (x)HTML et fait partie intégrante du code source. Le navigateur lit et interprète ce code source, et exécute alors vos scripts (ou les garde en mémoire pour les lancer plus tard, lorsqu'un événement particulier se produit).

  • Le Java, quant à lui, est compilé pour former un programme. Comme nous l'avons déjà vu, les langages compilés sont les opposés des scripts.

Si "LiveScript" (en rappel, c'est la tout première appellation du JavaScript) a pris le nom qu'on lui connaît aujourd'hui, c'est parce que Java et JavaScript ont un seul point commun : ce sont des langages orientés objet (comme le C++ si vous connaissez, c'est pour cela qu'ils sont proches). A part cela, je le dis et je le répète, ces deux langages sont strictement opposés !

Alors, s'il y en a un qui confond ces deux langages, ça va chi mal se passer :pirate: !!!

Maintenant que vous savez ce qu'est le JS, direction le chapitre suivant.
Au programme : la création de votre premier script :) !

Example of certificate of achievement
Example of certificate of achievement