Et d'abord, à quoi bon ? C'est vrai, ça : qu'est-ce que c'est, ce truc ? Est-ce que ça sert à autre chose qu'à frimer dans la conversation (lire : à passer pour un dangereux techno-névrosé
) ?
Vous avez une amorce de réponse au début de l'article Faire un "Lire la suite". Précisons un peu le propos.
Une page HTML, de blog ou d'autre chose, est essentiellement statique, immuable. JavaScript permet d'en animer le contenu une fois qu'elle est chez le lecteur, de faire bouger tout ça sans devoir charger une nouvelle version de la page.
JavaScript n'est pas indispensable : la pseudo-classe :hover permet beaucoup de choses, elle en permettrait encore plus si IE la supportait, comme il le devrait, sur toutes les balises et pas uniquement sur les liens (note 2009 : ouf ! IE8 semble à niveau). IE est à la fois très en retard (un peu moins depuis la version 7) et très répandu, il faut donc s'en accommoder. Querelle de spécialistes ? Imaginez seulement que, pour ne pas brimer les non-comprenants (puissant groupe de pression) il soit obligatoire d'accompagner tout mot de plus de trois syllabes de sa définition, et allez donc écrire un article… C'est cette pauvreté d'IE qui explique, entre autres choses, qu'il soit si ardu de monter un système de menus déroulants dans un blog.
Revenons à la pseudo-classe :hover. Elle est, je crois, une invention assez récente – introduite d'ailleurs à l'initiative de Microsoft. La persistance des vieilles habitudes explique sans doute qu'il reste tant de gens convaincus qu'il faut du Javascript pour faire changer la couleur d'un lien qu'on survole… ce qui est précisément l'utilité de la pseudo-classe :hover !
Toutefois, lorsque ce que si passe dans un élément HTML doit agir sur un autre élément HTML ou encore dépend du contenu de cet autre élément, il n'y a guère d'autre choix que JavaScript.
Où ça se trouve ? Il faut vraiment l'apprendre ?
De très nombreux sites proposent des petits bouts de JavaScript à recopier en l'état, ou à peu près, chez soi. Cette méthode est paresseuse – ce que je tiens pour une vertu – mais dangereuse.
Laissons la paranoïa de côté : le risque de sécurité est minime. JavaScript n'a, sur votre ordinateur, accès qu'aux cookies du navigateur, et encore pas tous. Il ne peut pas lire et encore moins créer, modifier ou effacer un de vos fichiers. Ne parlons donc pas de virus ou de ce genre de saletés.
Non, le vrai risque est tout simplement que le programme ne marche pas chez vous ou chez certains de vos lecteurs.
Il peut, par exemple, s'appuyer très lourdement, trop lourdement, sur les capacités particulières de tel ou tel navigateur, et ne pas fonctionner avec tel autre non prévu ou même avec une nouvelle version du navigateur initial. JavaScript est encore moins standardisé que CSS, et c'est très pénible – d'ailleurs, il s'appelle JavaScript chez Netscape et sa descendance, mais JScript chez Microsoft : ça commence bien !
Un autre risque est que le programme, rédigé par quelqu'un qui ne connaît pas votre blog, entre en conflit avec d'autres gadgets que vous auriez déjà rajoutés, avec des identifiants déjà présents dans la page, etc. . De ce point de vue, les scripts rédigés par des utilisateurs d'OverBlog sont a priori plus fiables puisque eux sont de la famille
et connaissent le contexte (je ne veux me fâcher avec personne – et après tout, moi aussi je deale des scripts !)
De plus, les auteurs de bibliothèques JavaScript ont tendance à vouloir tout faire avec leur langage favori – et malheureusement ils y parviennent, jusqu'à rédiger à la volée des pages entières. Or :
- beaucoup de choses sont possibles avec un balisage HTML bien pensé et du CSS, sans une ligne de JavaScript ou presque.
- un certain nombre de gens naviguent sans activer JavaScript, soit parce qu'il est désactivé (politique d'entreprise, par exemple) soit parce que leur navigateur ne sait pas faire (navigateurs pour déficients visuels, autre exemple).
- enfin, comme dit plus haut, la normalisation de JavaScript est encore imparfaite, et ce qui marche chez l'un peut planter chez l'autre.
Un site devrait toujours rester navigable même si JavaScript est indisponible. De ce point de vue, je donne le mauvais exemple avec mon si joli menu à coulisse (mais je trouverai une solution, JE TROUVERAI ! Rahh !)
Donc, puisque le pompage à l'aveuglette est déconseillé, il faut acquérir quelques connaissances sur le langage pour ne pas acheter un chat dans un sac et, au moins, comprendre un peu ce que l'on copie/colle si on n'a pas le temps ou le courage de l'écrire soi-même (ce qui est pourtant assez distrayant).
Toujours envie de vous y mettre ? Bon.
Une sélection de sites pour apprendre
Il existe une foultitude de tutoriels JavaScript. Tous disent comment écrire une instruction, un commentaire, déclarer une variable ou un tableau, etc. C'est bien, mais très insuffisant : l'intérêt de JavaScript est de pouvoir traiter les données présentes dans une page et ça, curieusement, c'est rarement expliqué à fond.
Voici le tutoriel par lequel j'ai commencé : Guide pratique et progressif du langage Javascript (autre version si la précédente s'affiche curieusement).
Si vous n'avez jamais appris à programmer (et même si …), c'est un très bon point de départ : l'auteur ne se contente pas de présenter la syntaxe du langage et des recettes, mais explique au passage les notions qu'elle recouvre, donne des conseils méthodologiques, etc. Un peu ancien, mais très riche et plein d'humour.
Vous pouvez préférer ce tutoriel-ci, issu d'un enseignement universitaire : Cours de JavaScript - Club d'entraide des développeurs francophones. Très clair et complet aussi, mais mieux vaut avoir déjà un peu programmé (peu importe le langage) pour en tirer profit.
Un excellent tutoriel (en anglais) par un développeur indépendant : JavaScript tutorial. C'est mon préféré :
- progressif et très bien construit – le design du site est un modèle de clarté
- il signale nettement ce qui marche dans tous les navigateurs et ce qui est propre à certains
- il indique très clairement aussi la meilleure manière de ne pas se compliquer la vie avec les différences entre navigateurs
- il donne, dans un format commode, la liste complète des méthodes et des objets disponibles dans la plupart des navigateurs + IE et ça, c'est inestimable.
Peut-être pas idéal pour une initiation, mais vite indispensable. C'est le seul site que je consulte régulièrement.
Expressions rationnelles (regular expressions)
C'est un casse-méninges, mais bien utile pour traiter des chaînes de caractères.
J'ai trouvé ce tutoriel : Regular-Expressions.info. Il est en anglais, il est assez laid, mais il va très loin dans le sujet (pas indispensable de tout lire) et il fournit de bons exemples.
Je vous recommande aussi, et très vivement, cet article : Enfin Maîtriser Les Expressions Rationnelles, écrit en français (et en français convenable !) par un développeur tout à fait compétent. En fait, vous devriez commencer par lui.
Trois sites pour en savoir plus
Chez Mozilla, héritier de Netscape qui a créé JavaScript, un guide du langage, son manuel de référence et la référence du DOM.
Peter Paul Koch est un développeur indépendant néerlandais, et une référence reconnue en JavaScript. Son site (en anglais) QuirksMode - for all your browser quirks, s'il n'est pas un tutoriel à proprement parler, contient beaucoup d'informations et de sages principes.
Enfin, si l'expression langage de programmation orienté objet
vous laisse de marbre, ce peut être fâcheux : JavaScript est un tel langage. Pour combler vos lacunes, j'ai trouvé un bon exposé chez CommentCaMarche : Introduction à la programmation orientée objet
Woualà.
Pour mémoire : Quelques sites mentionne d'autres fournisseurs à moi.
Dernière mise à jour de cet article : mars 2013