**Over the past few months, you’d be forgiven for thinking that this column has morphed from an Inkscape tutorial to a more general “SVG in HTML” series. In practice, I’ve been introducing a little background knowledge before delving into the (limited) JavaScript features that are already present in Inkscape. But that requires just a little more background information about JavaScript itself, and its use in SVG on the web… JavaScript (JS) is the de facto programming language used in web pages. It’s an implementation of a language called ECMAScript, so you might occasionally see that term mentioned. It’s nothing to do with the Java programming language – it just shares a similar name thanks to someone in marketing at Netscape many years ago deciding that ‘brand awareness’ was more important than ‘avoiding decades of confusion’.** Au cours des quelques derniers mois, vous seriez pardonné si vous avez pensé que cette rubrique s'était transformée d'un tutoriel sur Inkscape en une série plus généraliste sur « le SVG dans le HTML ». En pratique, j'ai présenté quelques connaissances de base avant de plonger dans des fonctionnalités (limitées) du JavaScript qui sont déjà présentes dans Inkscape. Mais ceci réclame un peu plus d'information de fond sur le JavaScript lui-même, et son utilisation dans SVG sur le Web... JavaScript (JS) est de fait le langage de programmation utilisé dans les pages du Web. C'est une implémentation d'un langage appelé ECMAScript ; aussi, vous pourrez rencontrer occasionnellement une mention de ce terme. Ça n'a rien à voir avec le langage de programmation Java, ils partagent simplement un nom similaire grâce à quelqu'un du marketing de Netscape qui a, il y a pas mal d'années, décidé que la « notoriété commerciale » était plus importante que « d'éviter des années de confusion ». **Within a browser, JavaScript gives you the capability to write code that can modify the page and respond to interactions initiated by the user, or by external actions such as some data being pushed from a server. These triggers are referred to as ‘events’, and will form the core of the JS code we’ll be writing in this series. The basic approach is that we’ll use SVG to draw something to the browser window, then attach events to monitor for clicks, mouse movements, keypresses, and so on, each of which then triggers some JS code which can, in turn, modify the SVG. Because JavaScript can read keypresses from the user, and can talk to a server, it raises security concerns. You could, for example, use SVG to create a beautiful image, but as soon as the mouse moves over it, your JS could redraw the image to look like a legitimate username/password box has opened on the screen. Anything typed into the box could be sent back to your server and used for your own nefarious ends. As a technically aware reader of FCM, you may not be fooled by such an obvious scam, but a huge number of people will happily enter their credentials into such a dialog as an almost Pavlovian response.** Dans un navigateur, JavaScript vous donne la possibilité d'écrire du code qui peut modifier la page et répondre aux interactions initiées par l'utilisateur, ou par des actions externes, telles que des données envoyées depuis un serveur. Ces déclencheurs s'appellent des « events » (événements) et formeront le cœur du code JS que nous écrirons dans cet article. En gros, l'approche va être d'utiliser SVG pour dessiner quelque chose dans la fenêtre du navigateur, puis d'y attacher des événements pour gérer, notamment, des clics, des mouvements de la souris, des appuis au clavier, chacun d'eux déclenchant un peu de code JS qui peut, à son tour, modifier le SVG. Comme JavaScript peut lire les appuis de l'utilisateur sur des touches, et peut converser avec un serveur, il pose des problèmes de sécurité. Vous pourriez, par exemple, utiliser SVG pour créer une belle image, mais, dès que la souris passe au-dessus, votre JS pourrait redessiner l'image pour qu'elle ressemble à une vraie boîte de dialogue pour identifiant et mot de passe qui s'est ouverte à l'écran. Tout ce qui serait saisi dans la boîte serait alors renvoyé au serveur et utilisé malheureusement à vos dépens. Comme vous êtes un lecteur techniquement averti du FCM, vous ne vous feriez pas avoir par une telle arnaque, mais un très grand nombre des gens entreraient gentiment leurs identifiants dans une telle boîte de dialogue, presque comme par un réflexe pavlovien. **To prevent such attacks, browsers limit the ability of SVG to run JavaScript, depending on how the SVG has been included in the page. I’ve talked about this previously, but it’s worth recapping: SVG in an : This is how images are usually displayed in a web page, and is used in countless bulletin boards and social media sites. Because anyone can upload any image, there’s a huge potential security hole, so JavaScript in SVG is blocked entirely. SVG as a CSS background-image: Although less frequently used as a way for users to upload images, the code paths used in browsers are pretty much the same for CSS images as for elements, so the previous rule still applies: no JavaScript. Inline SVG: This requires the actual code of the page to be edited, so it’s assumed that the work is being done by someone in a trusted position, and therefore the browser allows JavaScript.** Pour empêcher de telles attaques, les navigateurs limitent la possibilité pour le SVG de lancer du JavaScript, selon comment le SVG a été incorporé dans la page. J'en avais parlé précédemment, mais c'est bien de récapituler : SVG dans un : C'est ainsi que les images sont généralement affichées dans une page Web, et c'est utilisé dans un nombre incalculable de sites de tableaux d'affichage et de médias sociaux. Comme n'importe qui peut téléverser n'importe quelle image, il y a un énorme trou de sécurité potentiel ; aussi, le JavaScript dans du SVG est entièrement bloqué. SVG comme image d'arrière-plan du CSS : Bien que moins fréquemment utilisé par les utilisateurs pour téléverser des images, les bouts de code utilisés dans les navigateurs sont à peu près les mêmes pour les images du CSS que pour les éléments ; aussi, la règle précédente s'applique : pas de JavaScript. SVG en ligne : Ceci requiert que le vrai code de la page soit édité ; aussi, il est admis que ce travail doit être fait par une personne de confiance et, donc, le JavaScript est autorisé. **SVG in an This is the W3C standard way to include “foreign” content into a web page – including Flash, Java applets, and other potentially dangerous code. As such, it’s always had a more lax set of security rules than , and no sensible website developer allows user-uploaded content to be displayed in an . Therefore it’s considered to be something that is added only by someone in a trusted position, and JavaScript is allowed. SVG in an