Vous êtes sur la page 1sur 31

Ajax (informatique)

Aller : Navigation, rechercher


Pour les articles homonymes, voir Ajax.
L'architecture informatique Ajax (acronyme d'Asynchronous JavaScript and XML) permet
de construire des applications Web et des sites web dynamiques interactifs sur le poste client
en se servant de diffrentes technologies ajoutes aux navigateurs web entre 1995 et 2005.
Ajax combine JavaScript, les CSS, XML, le DOM et le XMLHttpRequest afin d'amliorer
maniabilit et confort d'utilisation des Applications Internet Riches (abr. RIA)1,2 :

DOM et JavaScript permettent de modifier l'information prsente dans le navigateur


en respectant sa structure ;

L'objet XMLHttpRequest sert au dialogue asynchrone avec le serveur Web ;

XML structure les informations transmises entre serveur Web et navigateur.

Outre le XML, les changes de donnes entre client et serveur peuvent utiliser d'autres
formats, tels que JSON.
Les applications Ajax fonctionnent sur tous les navigateurs Web courants : Mozilla Firefox,
Internet Explorer, Konqueror, Google Chrome, Safari, Opera, etc.

Sommaire

1 Le principe

2 Histoire

3 Les technologies utilises

4 Ajax et les applications Web classiques

5 La concurrence

6 Avantages et inconvnients

7 Programmation et Ajax
o 7.1 Open AJAX

8 Exemples

9 Notes et rfrences

10 Voir aussi
o 10.1 Articles connexes
o 10.2 Liens externes

Le principe

Dialogue entre serveur et navigateur


Dans une application Web, la mthode classique de dialogue entre un navigateur et un serveur
est la suivante : lors de chaque manipulation faite par l'utilisateur, le navigateur envoie une
requte contenant une rfrence une page Web, puis le serveur Web effectue des calculs, et
envoie le rsultat sous forme d'une page Web destination du navigateur. Celui-ci affichera
alors la page qu'il vient de recevoir. Chaque manipulation entrane la transmission et
l'affichage d'une nouvelle page et l'utilisateur doit attendre l'arrive de la rponse pour
effectuer d'autres manipulations.
En utilisant Ajax, le dialogue entre le navigateur et le serveur se droule la plupart du temps
de la manire suivante : un programme crit en langage de programmation JavaScript,
incorpor dans une page web, est excut par le navigateur. Celui-ci envoie en arrire-plan
des demandes au serveur Web, puis modifie le contenu de la page actuellement affiche par le
navigateur Web en fonction du rsultat reu du serveur, vitant ainsi la transmission et
l'affichage d'une nouvelle page complte.
La mthode classique de dialogue utilise des mcanismes propres au World Wide Web, qui
sont incorpors dans tous les navigateurs ainsi que les robots d'indexation, et ne ncessite pas
de programmation. Au contraire, le fonctionnement d'Ajax ncessite de programmer en
JavaScript les changes entre le navigateur et le serveur Web. Il ncessite galement de
programmer les modifications effectuer dans la page Web la rception des rponses, sans
quoi les dialogues se font l'insu de l'utilisateur3.

En Ajax, comme le nom l'indique, les demandes sont effectues de manire asynchrone : le
navigateur Web continue d'excuter le programme JavaScript alors que la demande est partie,
il n'attend pas la rponse envoye par le serveur Web et l'utilisateur peut continuer effectuer
des manipulations pendant ce temps4.

Histoire
Le World Wide Web a t cr en 1989, et popularis dans les annes 1990.
Le langage de programmation JavaScript est apparu pour la premire fois en 1996, dans le
navigateur Web Netscape Navigator.
L'interface de programmation Document Object Model (abr. DOM) a t normalise par le
W3C en 1998.
XMLHttpRequest est initialement un composant ActiveX cr en 1998 par Microsoft pour
leur application web Outlook Web Access, puis il a t ajout la norme ECMAScript relative
au langage JavaScript et mis en uvre sur la plupart des navigateurs du march entre 2002 et
20053.
Le terme Ajax a t introduit par Jesse James Garrett (en) (informaticien amricain), le 18
fvrier 2005, dans un article sur le site Web Adaptive Path5. Depuis, il a rapidement gagn en
popularit.

Les technologies utilises


La mthode Ajax consiste utiliser de manire conjointe diverses technologies normalises
ouvertes et disponibles sur la plupart des navigateurs du march.

JavaScript est un langage de programmation incorpor dans les navigateurs. Les


programmes crits dans ce langage sont excuts par le navigateur. Il est utilis en
particulier pour exploiter le XMLHttpRequest et le DOM. C'est la cl de vote de
l'Ajax.

HTML et CSS pour la prsentation. Les CSS (sigle de Cascading Style Sheets) est un
format de donnes utilis pour crer des feuilles de styles attaches aux pages web. Il
est utilis dans les applications Web pour dissocier le contenu - changeant - des pages
web de leur prsentation qui est constante. Il permet de raliser des conomies sur les
communications entre le serveur et le navigateur web et mettre en place une charte
graphique.

Le DOM (sigle de Document Object Model ) pour l'affichage dynamique et


l'interaction avec les donnes. C'est une collection d'objets o chaque objet reprsente
un lment structurel ou visuel d'une page web ou d'un document XML. Il est utilis
partir d'un langage de programmation oriente objet tel que JavaScript pour inspecter
et modifier le contenu des pages Web.

Le XMLHttpRequest est un objet de programmation, utilis dans les programmes en


langage JavaScript pour assurer la communication entre le navigateur et un serveur

Web. Il est utilis pour la communication asynchrone : envoyer les requtes vers le
serveur et dclencher des oprations lors de la rception de rponses de celui-ci.

XML (sigle de Extensible Markup Language) est un langage de balisage et JSON


(sigle de JavaScript Object Notation) est un format de donnes inspire de la syntaxe
du langage JavaScript. Ils sont utiliss pour structurer les informations envoyes par le
serveur Web. Le format XML est accompagn de XSLT pour sa manipulation.

Ajax et les applications Web classiques


Les applications Web classiques permettent aux utilisateurs d'effectuer des choix (suivre un
lien, remplir et valider un formulaire) la suite de quoi une requte est envoye au serveur
Web. Le serveur rpondra la requte en envoyant une page Web. Une page web est envoye
en rponse chaque manipulation, et la transmission de la page web entre le serveur et le
navigateur provoque un temps de latence d'autant plus grand que la page est riche en contenu
et en prsentation (tableaux, couleurs, polices de caractres).
Dans les applications Web en Ajax, une page Web est envoye une seule fois. La page
envoye contiendra un programme crit en langage JavaScript. Lors des manipulations
effectues sur la page par l'utilisateur, le programme en JavaScript envoie des requtes au
serveur Web, le serveur rpondra aux requtes en envoyant un document au format XML, ce
document ne contient pas d'information de prsentation et le nombre d'informations qu'il
contient est souvent rduit, d'o des temps de latence plus rduits que ceux d'une application
Web classique.
L'utilisation de JavaScript permet de provoquer des requtes lors de manipulation qui
autrement n'en provoqueraient pas (du fait des mcanismes utiliss). Ce qui permet de mettre
en uvre des fonctionnalits qui se rencontrent uniquement dans les Rich Internet
Application.
Les feuilles de style CSS sont en outre utilises dans les diffrentes pages d'une application
Web Ajax, dans le but de diminuer le temps de latence lors de l'envoi initial de la page. Les
informations de prsentation sont extraites des diffrentes pages Web de l'application, et
places dans une feuille de style unique, utilise pour les diffrentes pages de l'application.

La concurrence
La concurrence pour l'affichage de contenus dynamiques au sein d'une page Web est la
suivante :

Flash et Flex (Adobe Systems) ;

JavaFX et Applet Java (Sun Microsystems) ;

Silverlight (Microsoft) ;

XForms, un standard de formulaire propos par le W3C (mis de ct).

Avantages et inconvnients
Le but recherch d'Ajax est la diminution des temps de latence, l'apport de nouvelles
fonctionnalits et l'augmentation de la ractivit de l'application Web. Les applications Web
qui possdent ces qualits sont appeles Rich Internet Application (abr. RIA).
Par rapport des produits concurrents permettant de raliser des RIA, tels que Adobe Flex ou
Microsoft Silverlight, qui ncessitent l'installation d'un plug-in sur chaque navigateur sur
lequel cette technologie va tre utilise, Ajax fait usage de technologies prsentes de srie sur
la plupart des navigateurs Web sur le march.
JavaScript est un langage de programmation qui peut tre utilis pour raliser et rpandre des
virus informatiques et des logiciels malveillants. Certains logiciels de lutte contre les logiciels
malveillants peuvent interdire prventivement l'excution de tout programme crit en
JavaScript6. Pour la mme raison, les entreprises peuvent parfois interdire l'excution des
programmes crits en JavaScript, conformment leur politique de scurit informatique. Ces
interdictions empchent les applications Web en Ajax de fonctionner.
Les robots d'indexation, utiliss par les moteurs de recherche exploitent les mcanismes
intgrs du World wide web - ceux exploits par les applications classiques - et n'excutent
pas les programmes en JavaScript. Par consquent, le contenu des pages cres par un
programme JavaScript ne sera pas ajout l'index du moteur de recherche. Le mme
problme se pose avec les produits concurrents comme Adobe Flex et Microsoft Silverlight.

Programmation et Ajax
Pour faciliter lutilisation de ces technologies, de nombreux frameworks ont t mis en place.
Il sagit en gnral dun ensemble de bibliothques javascript permettant de raliser les
traitements asynchrones et doffrir une ergonomie avance grce une palette dobjets
graphiques aboutis.
Dans un souci dindustrialisation, nombre de ces frameworks ont t coupls des
frameworks de conception web.
On estime plus de 500 le nombre de frameworks JavaScript actuels. Les principaux sont
dans l'article Frameworks Ajax.
Ct serveur, le principe mme d'Ajax implique que le choix de la technologie soit libre.
Cependant, certaines technologies orientes vnementiel ont un fort potentiel de
productivit.

Ruby, et spcialement Ruby on Rails

.NET 2.0 de Microsoft dveloppe un framework pour ASP.Net (Microsoft ASP.Net


Ajax).

Morfik WebOS AppsBuilder de MORFIK est un EDI complet pour des applications
AJAX avec un 'designer' visuel et le choix du langage de programmation (Pascal,
Basic, Java, C#).

Une nouvelle approche permet de se dfaire du dveloppement JavaScript, souvent


jug coteux et complexe. Cette approche vise industrialiser le dveloppement et est
symbolise par des frameworks tels que GWT ou Echo2.

En parallle est dveloppe une ASP.NET Ajax Control Toolkit, qui offre de nombreux
contrles prts lemploi pour les dveloppeurs utilisant Visual Studio 2005. On y trouve
actuellement une trentaine de contrles mais Microsoft en prvoit 50 100, tous fournis avec
leur source. Il existe aussi un tutoriel sur le site pour crer ses propres contrles Toolkit qui
utilisent la technologie Ajax .NET.
De plus, on a vu rcemment arriver le design pattern Comet , qui propose des solutions
pour effectuer du push de donnes grce Ajax.

Open AJAX
IBM a cr Open AJAX Initiative, un groupe de promotion de cette technologie avec des
partenaires tels que 24SevenOffice, Adobe Systems, BEA Systems, Borland, the Dojo
Foundation, Eclipse Foundation, Google, Ilog, Yahoo!, Laszlo Systems, Mozilla Corporation,
Novell, Openwave Systems, SAP, Oracle, Red Hat, Tibco, Zend et Zimbra7.
Le premier rsultat de cette initiative est l'AJAX Toolkit Framework8 (ATF), un projet qui vise
proposer des outils pour le dveloppement d'applications AJAX dans l'outil de
dveloppement Eclipse. Ce projet s'appuie entre autres sur la contribution initiale d'IBM et
divers frameworks AJAX open source (tels que Dojo ou Rico).

Exemples
Exemple d'une requte Ajax en utilisant la bibliothque jQuery:
Le code d'index.html est crit en HTML5. On y dclare un formulaire permettant la saisie de
deux nombres.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" media="screen" href="style.css">
<script src="jquery-1.6.2.min.js"></script> <!-- Les sources de la
bibliothque JQuery -->
<script src="script.js"></script> <!-- La source qui contient le code
d'envoi en Ajax -->
</head>
<body>
<form method="post" action="add.php"> <!-- Formulaire envoy par la
mthode POST -->
<fieldset>
<legend>Choisissez deux nombres entiers</legend>
<p><label>a = <input name="a" type="number" required></label></p>
<!-- Premier nombre -->
<p><label>b = <input name="b" type="number" required></label></p>
<!-- Deuxime nombre -->
</fieldset>

<fieldset>
<legend>R&eacute;sultat</legend>
<p id="result"></p> <!-- Le rsultat sera plac ici -->
</fieldset>
<p><button>Soumettre</button></p> <!-- Bouton de soumission -->
</form>
</body>
</html>

index.html
La soumission du formulaire provoque l'envoi des deux nombres au serveur. Lorsque la
rponse du serveur a t reue, on l'insre dans une balise prvue cet effet.
$(document).ready(OnReady); // Abonne le callback excuter lorsque tout
le DOM est charg
function OnReady(){
$("form").submit(OnSubmit); // Abonne un callback l'vnement
"submit" du formulaire
}
function OnSubmit(data){
$.ajax({
type: $(this).attr("method"), // Rcupre la mthode d'envoi du
formulaire, ici "POST"
url: $(this).attr("action"), // Rcupre l'url du script qui reoit
la requte, ici "add.php"
data: $(this).serialize(), // Fabrique la "query string" contenant
les deux nombres
success: OnSuccess // Callback qui rcupre la rponse du serveur
});
return false; // Annule l'envoi classique du formulaire
}
function OnSuccess(result){
$("#result").html(result); // Insre le rsultat dans la balise d'id
"result"
}

script.js
Le serveur calcule la somme de ces nombres et renvoie le rsultat.
<?php
print($_POST["a"] + $_POST["b"]); // Envoi au client le rsultat du calcul
de a + b
?>

add.php
L'envoi des nombres au serveur se fait de manire asynchrone par l'objet Ajax du navigateur.

Notes et rfrences
1.

(en) Michael Mahemoff, Ajax design patterns, O'Reilly Media, Inc. - 2006 (ISBN 978-0-596-10180-0).

2.

Luc Van Lancker, AJAX Dveloppez pour le Web 2.0 : Entrez dans le code : JavaScript, XML,
DOM, XMLHttpRequest, Editions ENI - 2007 (ISBN 978-2-7460-3707-6).

3.

a et b Bruno Catteau - Nicolas Faugout,Ajax - Le Guide complet,Editions Micro Application - 2009,


(ISBN 978-2-300-02202-9)

4.

(en) Nathaniel T. Schutta - Ryan Asleson,Pro Ajax and Java Frameworks,Apress, 2006,(ISBN 978-159059-677-7)

5.

(en) L'article de Jesse James Garrett [archive] qui a lanc le nom Ajax (traduction [archive])

6.

Thibault Verbiest - tienne Wry, Le droit de l'Internet et de la socit de l'information: droits


europen, belge et franais, Larcier, 2001 (ISBN 978-2-8044-0719-3)

7.

OpenAjax Alliance [archive]

8.

Description du projet [archive] hberg par eclipse.org

Voir aussi

AJAJ

Articles connexes

XMLHttpRequest

JavaScript

Cadre d'Application AJAX

Conception de site Web

DHTML

Liens externes

(fr) Catgorie Ajax (informatique) de lannuaire dmoz

Portail de linformatique

Catgories :

AJAX

Technologie web

Architecture informatique

Web 2.0

Interface riche

| [+]

Menu de navigation

Crer un compte

Connexion

Article

Discussion

Lire

Modifier

Afficher l'historique

Accueil

Portails thmatiques

Index alphabtique

Article au hasard

Contacter Wikipdia

Contribuer

Premiers pas

Aide

Communaut

Modifications rcentes

Faire un don

Imprimer / exporter
Bote outils
Autres langues

Afrikaans

Azrbaycanca

Catal

esky

Dansk

Deutsch

English

Espaol

Eesti

Euskara

Suomi

Gaeilge

Galego

Magyar

Bahasa Indonesia

Italiano

Lietuvi

Bahasa Melayu

Nederlands

Norsk nynorsk

Norsk bokml

Polski

Piemontis

Portugus

Romn

Simple English

Slovenina

Slovenina

Shqip

/ srpski

Svenska

Trkmene

Trke

/ Uyghurche

Ting Vit

Modifier les liens

Dernire modification de cette page le 13 mars 2013 01:58.

Droit d'auteur : les textes sont disponibles sous licence Creative Commons paternit
partage lidentique ; dautres conditions peuvent sappliquer. Voyez les conditions
dutilisation pour plus de dtails, ainsi que les crdits graphiques. En cas de
rutilisation des textes de cette page, voyez comment citer les auteurs et mentionner la
licence.
Wikipedia est une marque dpose de la Wikimedia Foundation, Inc., organisation
de bienfaisance rgie par le paragraphe 501(c)(3) du code fiscal des tats-Unis.

Politique de confidentialit

propos de Wikipdia

Avertissements

Version mobile

JavaScript
Aller : Navigation, rechercher
Ne doit pas tre confondu avec Java (langage).
JavaScript

Apparu en
Auteur
Dveloppeurs
Dernire version
Paradigme
Typage
Normes
Dialectes
Influenc par
A influenc
Implmentations
Site web

1995
Brendan Eich
Netscape Communications Corporation, Mozilla Foundation
[+/]

Multi-paradigme
dynamique, faible
ECMA-262
ISO/IEC 16262
JavaScript, JScript, ECMAScript
Self, Perl, C, Java, Python
JScript, JScript .NET, Objective-J, TIScript
SpiderMonkey, Rhino, KJS, JavaScriptCore, V8
Mozilla
modifier

JavaScript (souvent abrg JS) est un langage de programmation de scripts principalement


utilis dans les pages web interactives mais aussi ct serveur1. C'est un langage orient objet
prototype, c'est--dire que les bases du langage et ses principales interfaces sont fournies par
des objets qui ne sont pas des instances de classes, mais qui sont chacun quips de
constructeurs permettant de crer leurs proprits, et notamment une proprit de prototypage
qui permet d'en crer des objets hritiers personnaliss.
Le langage a t cr en 1995 par Brendan Eich (Brendan Eich tant membre du conseil
d'administration de la fondation Mozilla) pour le compte de Netscape Communications
Corporation. Le langage, actuellement la version 1.8.2 est une implmentation de la 3e
version de la norme ECMA-262 qui intgre galement des lments inspirs du langage
Python. La version 1.8.5 du langage est prvue pour intgrer la 5e version du standard
ECMA2.

Sommaire

1 Histoire
o 1.1 LiveScript et Mosaic Communications Corporation
o 1.2 Netscape et ECMAScript
o 1.3 Mise en uvre

2 Concepts
o 2.1 Hello world

3 Versions du langage
o 3.1 Version 1.5
o 3.2 Version 1.6
o 3.3 Version 1.7
o 3.4 Version 1.8
o 3.5 Version 1.9
o 3.6 Version 2.0

4 Utilisation
o 4.1 Dans une page web

4.1.1 Incompatibilits

4.1.2 Ajax

4.1.3 JSON

o 4.2 Autres utilisations

4.2.1 Sur un serveur web

4.2.2 Autres supports

5 Particularits du langage
o 5.1 Porte des variables

o 5.2 Fonctions anonymes


o 5.3 Encapsulation
o 5.4 Fermetures
o 5.5 Prototypes
o 5.6 Sparation des instructions
o 5.7 E4X

6 Notes et rfrences

7 Voir aussi
o 7.1 Articles connexes
o 7.2 Liens externes

Histoire
Le langage a t cr en 1995 par Brendan Eich pour le compte de la Netscape
Communications Corporation, qui s'est inspir de nombreux langages, notamment de Java
mais en simplifiant la syntaxe pour les dbutants3.

LiveScript et Mosaic Communications Corporation


Brendan Eich a initialement dvelopp un langage de script ct serveur, appel LiveScript,
pour renforcer l'offre commerciale de serveur HTTP de Mosaic Communications Corporation.
La sortie de LiveScript intervient l'poque o la NCSA force Mosaic Communications
Corporation changer de nom pour devenir Netscape Communications Corporation.
Netscape travaille alors au dveloppement d'une version oriente client de LiveScript.
Quelques jours avant sa sortie, Netscape change le nom de LiveScript pour JavaScript. Sun
Microsystems et Netscape taient partenaires, et la machine virtuelle Java de plus en plus
populaire. Ce changement de nom servait les intrts des deux socits.

Netscape et ECMAScript
En dcembre 1995, Sun et Netscape annoncent4 la sortie de JavaScript. En mars 1996,
Netscape met en uvre le moteur JavaScript dans son navigateur Web Netscape Navigator
2.0. Le succs de ce navigateur contribue l'adoption rapide de JavaScript dans le
dveloppement web orient client. Microsoft ragit alors en dveloppant JScript, qu'il inclut
ensuite dans Internet Explorer 3.0 en aot 1996 pour la sortie de son navigateur.

Netscape soumet alors JavaScript Ecma International pour standardisation. Les travaux
dbutent en novembre 1996, et se terminent en juin 1997 par l'adoption du nouveau standard
ECMAScript. Les spcifications sont rdiges dans le document Standard ECMA-262.
JavaScript est dcrit comme un complment Java dans un communiqu de presse4 commun
de Netscape et Sun Microsystems, dat du 4 dcembre 1995. Cette initiative a contribu
crer auprs du public une certaine confusion entre les deux langages, proches
syntaxiquement mais pas du tout dans leurs concepts fondamentaux, et qui perdure encore
aujourd'hui.

Mise en uvre
La troisime dition d'ECMAScript, parue en 1999 correspond la version 1.5 de JavaScript.
Sa mise en uvre par Microsoft est JScript. Adobe pour sa part, met en uvre ces
spcifications dans son langage ActionScript.
SpiderMonkey est le nom de la mise en uvre en langage C, sous la licence
MPL/GPL/LGPL tri-license , du langage JavaScript utilis dans Gecko, le moteur de rendu
dvelopp par Mozilla.

Concepts
Le propos de JavaScript est de manipuler de faon simple des objets, au sens informatique,
fournis par une application hte.

Hello world
Voici l'exemple classique du "Hello world" en JavaScript, lorsque l'application hte est un
navigateur Web.
alert("Hello world");

Dans l'application hte, alert est une mthode de la classe DOM window, mais celle-ci tant
rcurrente, c'est une des seules classes dont on ne doit pas forcment prciser le nom pour
utiliser ses mthodes.
La syntaxe
window.alert("Hello world");

aura donc exactement le mme rsultat.

Versions du langage
Les versions rcentes du langage JavaScript ont pour origine les spcifications de la norme
ECMA-262 dfinissant ECMAScript. JavaScript est un sur-ensemble d'ECMAScript
dvelopp par la fondation Mozilla et par Adobe lui ajoutant les fonctionnalits suivantes :

Version 1.5

Interprteur bas sur les spcifications ECMA-262 3e dition.

Version 1.6

E4X

extension de l'objet Array

rapprochement des objets String et Array

Liste plus complte

Version 1.7

gnrateurs (instruction yield)

itrateurs

dfinition de tableaux par comprhension (var evens = [i for (i in range(0, 21)) if (i% 2
== 0)];)

dfinition de porte locale (instruction let)

assignation dstructurante (renvoi de valeurs multiples : [a,b] = maFonction())

Liste plus complte

Version 1.8

extension des fermetures d'expressions

extension des expressions gnratrices

plus d'extras pour les tableaux

Liste plus complte

Version 1.9

extension des fermetures d'expressions

extension des expressions gnratrices

plus d'extras pour les tableaux

Liste plus complte

Version 2.0
Le dveloppement d'une version 2 de JavaScript base sur les spcifications du langage
ECMAScript dition 4 en collaboration avec Adobe, le projet Tamarin, a aujourd'hui t
abandonn. La norme un temps rdige par l'ECMA dans le document ECMA-262 4e dition
est en effet obsolte et a t remplace par ES55.

Utilisation
Dans une page web
Du code JavaScript peut tre intgr directement au sein des pages web, pour y tre excut
sur le poste client. C'est alors le navigateur Web qui prend en charge l'excution de ces
programmes appels scripts.
Gnralement, JavaScript sert contrler les donnes saisies dans des formulaires HTML, ou
interagir avec le document HTML via l'interface Document Object Model, fournie par le
navigateur (on parle alors parfois de HTML dynamique ou DHTML). Il est aussi utilis pour
raliser des services dynamiques, parfois futiles, strictement cosmtiques ou des fins
ergonomiques.
JavaScript n'est pas limit la manipulation de documents HTML et peut aussi servir
manipuler des documents SVG, XUL et autres dialectes XML .
Incompatibilits
Netscape et Microsoft (avec JScript dans Internet Explorer) ont dvelopp leur propre
variante de ce langage qui chacune supporte presque intgralement la norme ECMAScript
mais possde des fonctionnalits supplmentaires et incompatibles, rarement utilises dans le
cadre de la programmation de pages web. Pourtant les scripts JavaScript sont souvent la
source de difficults. Elles sont plus souvent dues la prise en charge des diffrentes versions
des modles d'objets (DOM) fournis par les navigateurs, qu' des problmes de portabilit du
langage (les diffrentes mises en uvre respectant relativement bien la norme ECMAScript).
Face ce problme on utilise souvent une construction du type :
if (monObjet.methode) {
monObjet.methode();
}

Il est toutefois prfrable d'utiliser une comparaison sur le type :


if (typeof monObjet.methode !== 'undefined') {
monObjet.methode();
}

Ou mieux encore :
if (typeof monObjet.methode === 'function') {
monObjet.methode();
}

On vrifie ainsi que monObjet a bien une mise en uvre de methode que l'on peut alors
utiliser. Le plus souvent, si un navigateur ne gre pas la methode de monObjet, il gre une
mthode comparable methode2, et on peut alors adapter le code JavaScript au navigateur qui
l'excute :
if (monObjet.methode) {
monObjet.methode();
}
else if (monObjet.methode2) {
monObjet.methode2();
}

Une autre mthode consiste vrifier, ct serveur, le navigateur utilis par le client et
d'envoyer le code correspondant. Cela n'est toutefois pas recommandable, car il est largement
prfrable de tester directement l'existence, le comportement d'une fonction, d'une
proprit, etc. plutt que de faire des prsomptions bases sur la dtection du navigateur.
Ajax
Article dtaill : Ajax (informatique).
JavaScript est utilis dans la mthode Ajax (de l'anglais Asynchronous Javascript And XML)
qui sert modifier le contenu des pages web par programmation. Suite des manipulations de
l'utilisateur, des scripts en langage JavaScript vont envoyer des demandes au serveur Web en
utilisant l'objet XMLHTTPRequest. Puis des scripts vont modifier le contenu de la page web
en fonction de la rponse reue ; la rponse est en format XML et le script manipule
l'ensemble d'objets DOM qui reprsente le contenu de la page. Les technologies
XMLHTTPRequest, XML et DOM ont t ajoutes aux navigateurs web entre 1995 et 2005.
La mthode Ajax permet de raliser des applications Internet riches, offrant une maniabilit et
un confort suprieur ; c'est un des sujets phares du mouvement Web 2.0.
JSON
Article dtaill : JavaScript Object Notation.
JSON (JavaScript Object Notation) est un format utilisant la notation des objets JavaScript
pour transmettre de l'information structure, d'une faon plus compacte et plus proche des
langages de programmation, que XML.
Malgr l'existence du DOM et l'introduction rcente de E4X (voir ci-dessous) dans la
spcification du langage JavaScript, JSON reste le moyen le plus simple d'accder des
donnes, puisque chaque flux JSON n'est rien d'autre qu'un objet JavaScript srialis. De plus,
malgr son lien historique (et technique) avec JavaScript, JSON reste un format de donnes
structures, et peut tre utilis facilement par tous les langages de programmation.
Depuis 2009, les navigateurs commencent intgrer un support natif du format JSON, ce qui
facilite sa manipulation, la scurit (contre l'valuation de scripts malveillants inclus dans une
chaine JSON), et la rapidit de traitement. Ainsi les navigateurs Firefox et IE6 l'intgrent
respectivement ds les versions 3.5 et 8.

Autres utilisations

Sur un serveur web


JavaScript peut galement tre utilis comme langage de programmation sur un serveur HTTP
l'image des langages comme PHP, ASP, etc. D'ailleurs le projet CommonJS travaille dans le
but de spcifier un cosystme pour JavaScript en dehors du navigateur (par exemple sur le
serveur ou pour les applications de bureau natives). Le projet a t lanc par Kevin Dangoor
en janvier 2009. Le projet CommonJS n'est pas affili avec le groupe de l'Ecma International
TC39 travaillant sur ECMAScript, mais certains membres du TC39 participent au projet.
Historiquement, JavaScript tait propos sur les serveurs de Netscape, par la suite distribus
par Sun Microsystems sous les noms iPlanet et Sun ONE, mais JScript peut aussi tre utilis
sur les serveurs Internet Information Services de Microsoft. JScript peut d'ailleurs servir pour
scripter une plate-forme Microsoft Windows via Windows Scripting Host (WSH).
Il existe par ailleurs des projets indpendants et Open Source d'implmentation de serveurs en
JavaScript. Parmi eux, on pourra distinguer Node.js, une plateforme polyvalente de
dveloppement d'applications rseau se basant sur le moteur JavaScript V8 et les
spcifications CommonJS.
Autres supports
On peut encore citer ActionScript, utilis dans Macromedia Flash qui est aussi une mise en
uvre d'ECMAScript. Il permet de manipuler tous les lments de l'animation, considrs
comme des objets. JavaScript peut tre utilis pour scripter les applications Adobe
(Photoshop, Illustrator...), ce qui permet d'avoir des scripts indpendants de la plate-forme
(Mac/Windows).
JavaScript est enfin utilis dans la plate-forme de dveloppement Mozilla, sur laquelle sont
bass plusieurs logiciels comme des navigateurs Web, pour des tches relatives l'interface
utilisateur et de communication interne (exemple : les extensions de Firefox et Thunderbird
sont installes base de fichiers XPI utilisant le JavaScript. Voir aussi Prefs.js).
Depuis 2004, l'objet "js" de l'environnement de programmation graphique Max/MSP, permet
d'ouvrir une fentre pour programmer en JavaScript, au sein mme d'un programme
Max/MSP.
Les logiciels ImageJ et CaRMetal sont munis de consoles JavaScript, qui leur permet d'crire
des scripts dans un contexte graphique. Et Algobox utilise JavaScript pour la syntaxe de ses
fonctions.
JavaScript est aussi utilis dans un contenu BIFS pour l'exploitation des vnements. Pour
cela la spcification BIFS fournit un nud Script pour incorporer de l'ECMAScript.
La suite bureautique OpenOffice.org permet d'utiliser JavaScript comme langage de macros
(Linux/Mac/Solaris/Windows).
JavaScript est aussi utilisable en shell7 ou avec les gadgets Vista.

Particularits du langage

Porte des variables


En Javascript il n'existe pas de porte lexicale de type bloc comme en Java (ou dans de
nombreux autres langages). La porte des variables est au niveau de la fonction o elles sont
dclares, c'est--dire que toute variable dclare dans le corps d'une fonction y est utilisable,
peu importe o se situe sa dclaration :
function test() {
i = 1; // cette affectation affecte la variable locale i (qui est
dclare plus loin)
{
for(var j = i; j > 0; j--) { // dclaration de la variable locale j
var k = j*2; // dclaration de la variable locale k
l = 42; // aucune variable locale ne s'appelant l, c'est la
proprit l du Global Object qui va tre change
}
var i; // dclaration de la variable locale i
}
return [i, j, k]; // toutes les variables dclares dans la fonction
sont utilisables ici (mme en dehors de leur bloc)
}

Toute variable dclare n'importe o dans le corps de la fonction tant dclare dans toute la
fonction, certains dveloppeurs choisissent par convention de toutes les dclarer au dbut de
celle-ci (comme en ANSI C). Le code source prcdent est donc quivalent celui-ci :
function test() {
var i = 1, j, k; // dclaration (et affectation ventuelle) de toutes
les variables
for(j = i; j > 0; j--) {
k = j*2;
l = 42;
}
return [i, j, k];
}

La porte lexicale d'une variable locale une fonction A s'tend aux dclarations de fonctions
faites l'intrieur de A, et ainsi de suite. L'inverse n'est pas vrai :
function A() {
var p = 2; // dclaration d'une variable p locale A
function B(p) { // le paramtre p se comporte en porte comme une
variable locale B, qui masque la variable p de A.
var j = p; // dclaration de la variable j locale B
return j - i; // B accs la variable i dclare dans A
}
var i = 5; // dclaration (et affectation) de i
alert( B(p*3) ); // appelle B(2*3) car p fait ici rfrence la
variable locale A ; affichera 1 (2*3 - 5)
return j; // cette ligne provoquera une ReferenceError: A n'a pas accs
la variable j locale B
}

C'est ce qu'on appelle la chane de porte (scope chain). Lorsque l'on fait rfrence une
variable, celle-ci est d'abord cherche dans la fonction courante. Si elle n'y est pas, elle est
cherche dans la fonction ayant dclar la fonction courante, et ainsi de suite jusqu' la porte

globale (global scope). Si elle reste introuvable, une exception de type ReferenceError est
leve.

Fonctions anonymes
Une fonction anonyme est, comme son nom l'indique, une fonction qui n'a pas de nom.
//Exemple 1
var maFonction = function(message) {
alert(message);
};
// affiche: ceci est un test
maFonction('ceci est un test');
<!-- Exemple 2 -->
<html>
<body onload="setTimeout( function() {
alert( 'chargement de la page termin il y a une seconde et demie' )
}, 1500 );">
</body>
</html>

Encapsulation
JavaScript ne propose pas nativement de fonctionnalit d'espace de nommage. Pour viter les
collisions de noms, entre autres par l'utilisation d'importation de code externe tel que les
plugin JavaScript, une mthode consiste encapsuler la bibliothque dans une fonction
anonyme. Les variables et fonctions n'ont plus dans ce cas une porte globale mais rduite la
porte de la fonction.

Pour ce faire, la dclaration "function() {}" permet de dfinir la fonction anonyme.

L'ajout de "()" la fin de la dclaration permet son excution immdiate.

La grammaire de JavaScript ne permettant cependant pas cette criture, il faut donc


encadrer la fonction anonyme avec des parenthses.

var maVariable = 'I am global';


(function() {
var maVariable = 'I am not global';
//Affiche 'I am not global'
alert(maVariable );
})();
//Affiche 'I am global'
alert(maVariable );

Fermetures
Les fermetures, plus couramment dsignes par leur dnomination anglaise closures ,
constituent une caractristique particulirement puissante du langage mais souvent mconnue

des dbutants. Il s'agit de la possibilit, pour une expression, d'accder des variables qui ne
sont plus sa porte.
//Exemple de fermeture
function ajouteur(nombre) {
function ajoute(valeur) {
return valeur + nombre;
}
return ajoute;
}
var ajoute10 = ajouteur(10);
ajoute10(1); // retourne 11

Dans l'exemple ci-dessus, la fonction interne ajoute10 a toujours accs au paramtre effectif
nombre malgr le fait que l'appel la fonction ajouteur soit termin.

Prototypes
Un prototype est un objet JavaScript qui est utilis lors d'un chec de rsolution d'un nom sur
son objet parent. Ce mcanisme est un type d'hritage : l'hritage par prototype.
function MonPrototype() {
this.a = 1;
this.b = function() {
return 'prototype';
};
this.e = 3;
}
function MaClasse() {
this.c = 2;
this.d = function() {
return 'classe';
};
}

this.e = 4;

MaClasse.prototype = new MonPrototype();


monObjet = new MaClasse();
monObjet.a;
monObjet.b();
monObjet.c;
monObjet.d();
monObjet.e;

//
//
//
//
//

1
'prototype'
2
'classe'
4

Sparation des instructions


En C, chaque instruction se termine par un point-virgule. Cette pratique a fait du point-virgule
une obligation dans de nombreux langages inspirs de la syntaxe du C.

JavaScript est plus souple, permettant une fin de ligne de marquer implicitement la fin d'une
instruction. Le but est de faciliter l'usage du langage aux personnes inexprimentes en
programmation informatique. Mais cette souplesse introduit des effets inattendus8 :
return
true;

Le parseur JavaScript comprend cela comme deux instructions :


return;
true;

alors que le programmeur pensait plus probablement la seule instruction :


return true;

Les ouvrages de programmation avancs en JavaScript mettent en garde contre les effets
inattendus de la dduction automatique de fin d'instruction et conseillent d'crire un pointvirgule la fin de chaque instruction, ce qui n'empche pas les surprises lorsqu'on oublie le
point-virgule, d'autant plus quand la compression du code impose le retrait des retours chariot.

E4X
Les versions rcentes de la mise en uvre du langage JavaScript de SpiderMonkey supportent
l'E4X. Il s'agit d'un support natif de XML ainsi que d'un support natif d'une syntaxe d'accs
aux donnes XML (sorte de XPath)
Exemple :
var xml = <menu id="file" value="File">
<popup>
<menuitem value="New" onclick="CreateNewDoc()" />
<menuitem value="Open" onclick="OpenDoc()" />
<menuitem value="Close" onclick="CloseDoc()" />
</popup>
</menu>

Exemple d'accs aux donnes :


xml.popup.menuitem.(@value == 'New').@onclick

L'exemple ci-dessus rcupre la fonction correspondant l'action "New". Le rsultat de


l'valuation est "CreateNewDoc()".
Autre exemple :
var item = 2;
xml.popup.menuitem[item].@value

Le rsultat de l'valuation est "Close".

Notes et rfrences

1.

(en) http://wiki.commonjs.org/wiki/CommonJS [archive]

2.

(en) https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.8.5 [archive]

3.

TechVision: Innovators of the Net: Brendan Eich and JavaScript [archive]

4.

a et b (en) NETSCAPE AND SUN ANNOUNCE JAVASCRIPT, THE OPEN, CROSS-PLATFORM


OBJECT SCRIPTING LANGUAGE FOR ENTERPRISE NETWORKS AND THE INTERNET

5.

(en) http://www.ecma-international.org/publications/standards/Ecma-262.htm [archive]

6.

http://blogs.msdn.com/ie/archive/2008/09/10/native-json-in-ie8.aspx [archive]

7.

Voir Introduction au shell JavaScript [archive]

8.

Cet exemple est donn page 25 par : JavaScript - The Definitive Guide, Fourth Edition, David
Flanagan, ditions O'Reilly Media, Sebastopol, Californie.

Voir aussi
Articles connexes

Syntaxe JavaScript

ECMAScript pour XML

Asynchronous JavaScript and XML

CoffeeScript

JSAN

Liens externes
Sur les autres projets Wikimedia :

JavaScript, sur Wikiversity

JavaScript, sur Wikibooks

World Wide Web : la fondation pour le logiciel libre propose une nouvelle forme de
gouvernance, sur Wikinews

Mozilla Developer Center JavaScript

Outil pour voir les codes JavaScript des pages Web visites

ECMAScript programming langage dition 5.1 (juin 2011) (en)

Open Directory JavaScript

(en) Microsoft MSDN - JScript

(en) Exemples d'utilisation avance du langage JavaScript

(fr) "JavaScript Eloquent" Une introduction au langage de programmation JavaScript


et la programmation en gnral.

(fr) Human Coders News - JavaScript

(en) JSFiddle pour tester vos codes

[afficher]
vdm

Langages de programmation
[afficher]
vdm

Accessibilit du Web

Portail de la programmation informatique

Catgories :

JavaScript

Langage de script

Langage orient objet

Langage pour pages Web dynamiques

Technologie web

| [+]

Menu de navigation

Crer un compte

Connexion

Article

Discussion

Lire

Modifier

Afficher l'historique

Accueil

Portails thmatiques

Index alphabtique

Article au hasard

Contacter Wikipdia

Contribuer

Premiers pas

Aide

Communaut

Modifications rcentes

Faire un don

Imprimer / exporter
Bote outils
Autres langues

Afrikaans

Azrbaycanca

emaitka

()

Catal

esky

Dansk

Deutsch

English

Esperanto

Espaol

Eesti

Euskara

Suomi

Galego

Hrvatski

Magyar

Interlingua

Bahasa Indonesia

slenska

Italiano

Basa Jawa

Lietuvi

Latvieu

Bahasa Melayu

Nederlands

Norsk bokml

Polski

Portugus

Romn

Simple English

Slovenina

Slovenina

Shqip

/ srpski

Svenska

Trkmene

Trke

Ting Vit

Modifier les liens

Dernire modification de cette page le 18 mai 2013 14:36.

Droit d'auteur : les textes sont disponibles sous licence Creative Commons paternit
partage lidentique ; dautres conditions peuvent sappliquer. Voyez les conditions

dutilisation pour plus de dtails, ainsi que les crdits graphiques. En cas de
rutilisation des textes de cette page, voyez comment citer les auteurs et mentionner la
licence.
Wikipedia est une marque dpose de la Wikimedia Foundation, Inc., organisation
de bienfaisance rgie par le paragraphe 501(c)(3) du code fiscal des tats-Unis.

Politique de confidentialit

propos de Wikipdia

Avertissements

Version mobile