
Ă propos de lâaction ExĂ©cuter JavaScript sur une page web dans Raccourcis
Presque toutes les pages web intĂšgrent des scripts JavaScript, un langage de programmation permettant de crĂ©er des effets dynamiques dans les navigateurs, notamment des animations, des menus interactifs, la lecture de vidĂ©os, et plus encore. En gĂ©nĂ©ral, vous nâavez pas accĂšs Ă lâenvironnement dâexĂ©cution JavaScript pendant que vous visitez un site web. Toutefois, en crĂ©ant un raccourci contenant lâaction ExĂ©cuter JavaScript sur une page web, puis en exĂ©cutant ce raccourci depuis lâapp Safari, vous pouvez contrĂŽler lâenvironnement dâexĂ©cution JavaScript dâune page web.
LâexĂ©cution dâun script JavaScript personnalisĂ© sur une page web Ă lâaide dâun raccourci offre une multitude de possibilitĂ©s. Par exemple, vous pouvez crĂ©er des raccourcis qui rĂ©cupĂšrent des donnĂ©es spĂ©cifiques dâune page web puis les intĂšgrent Ă une tĂąche, comme extraire un planning de cours puis lâajouter Ă lâapp Calendrier, ou exporter les donnĂ©es des membres dâun groupe Facebook puis les ajouter Ă une feuille de calcul.
Vous pouvez Ă©galement crĂ©er des raccourcis vous permettant de modifier une page web, comme changer la police du texte ou la vitesse de lecture dâune vidĂ©o.
Pour en savoir plus sur lâutilisation de raccourcis exĂ©cutant JavaScript sur une page web, consultez la rubrique Utiliser lâaction ExĂ©cuter JavaScript sur une page web dans Raccourcis.
Ă propos de la rĂ©cupĂ©ration de donnĂ©es dâune page web
Lâaction ExĂ©cuter JavaScript sur une page web vous permet de rĂ©cupĂ©rer des donnĂ©es sur une page web en collectant tous les Ă©lĂ©ments correspondant Ă certains critĂšres, puis en itĂ©rant sur ces Ă©lĂ©ments pour manipuler les donnĂ©es (ou pour les examiner plus en dĂ©tail).
Par exemple, pour crĂ©er une liste de tous les Ă©lĂ©ments dâimage dâune page web, utilisez :
var elements = document.querySelectorAll("img");
De mĂȘme, pour rĂ©cupĂ©rer tous les Ă©lĂ©ments associĂ©s Ă la classe « post », utilisez :
var elements = document.querySelectorAll(".post");
Une fois lâobjet NodeList créé, vous pouvez itĂ©rer sur les Ă©lĂ©ments (pour les filtrer davantage ou les ajouter Ă une structure de donnĂ©es) en utilisant par exemple :
var elements = ...;
for (let element of elements) {
// ...
}
Pour en savoir plus sur lâinterrogation des rĂ©sultats dâune page web, consultez les pages suivantes : https://developer.mozilla.org/fr/Selectors et https://developer.mozilla.org/fr/SelectorAll.
EntrĂ©e de lâaction ExĂ©cuter JavaScript sur une page web
LâentrĂ©e de lâaction ExĂ©cuter JavaScript sur une page web doit ĂȘtre une page web active dans Safari, ce qui signifie que vous devez exĂ©cuter le raccourci depuis lâextension dâaction Raccourcis disponible dans la feuille de partage (depuis Safari, SFSafariViewController ou ASWebAuthenticationSession).
Lorsquâun raccourci est exĂ©cutĂ© depuis la feuille de partage, lâentrĂ©e issue de lâapp Safari est transmise Ă la premiĂšre action de votre raccourci.
Bien que lâentrĂ©e de lâaction ExĂ©cuter JavaScript sur une page web doive ĂȘtre une page web Safari, vous pouvez insĂ©rer des donnĂ©es supplĂ©mentaires dans lâaction Ă lâaide de variables magiques. Par exemple, le raccourci suivant contient une action ExĂ©cuter JavaScript sur une page web qui modifie une vidĂ©o sur une page web. La vitesse de lecture de la vidĂ©o est contrĂŽlĂ©e par la variable Vitesse.

Astuce : le raccourci Change Video Speed (Modifier la vitesse de la vidéo) est disponible dans la Galerie.
Si ExĂ©cuter JavaScript sur une page web nâest pas la premiĂšre action de votre raccourci, un message dâerreur apparaĂźt lors de lâexĂ©cution de ce dernier.

Pour rĂ©soudre ce problĂšme, vous pouvez ajouter une action Obtenir la variable et dĂ©finir son paramĂštre sur la page web Safari afin de transmettre le contenu de cette derniĂšre Ă lâaction ExĂ©cuter JavaScript sur une page web.
Pour en savoir plus sur lâexĂ©cution de raccourcis depuis Safari, consultez Configurer et exĂ©cuter des raccourcis dans une autre app.
RĂ©sultat de lâaction ExĂ©cuter JavaScript sur une page web
Pour que des donnĂ©es soient renvoyĂ©es, vous devez appeler le gestionnaire dâachĂšvement en langage JavaScript, par exemple completion(result)
. Comme le JavaScript est gĂ©nĂ©ralement utilisĂ© avec des modĂšles asynchrones, lâappel nâest volontairement pas synchrone. Vous pouvez ainsi terminer lâaction de façon asynchrone. Par exemple, le code suivant est valide :
window.setTimeout(function() {
completion(true);
}, 1000);
Le rĂ©sultat de lâaction ExĂ©cuter JavaScript sur une page web peut ĂȘtre nâimporte quel type de donnĂ©es JSON valide, notamment :
une chaĂźne ;
un nombre ;
une valeur booléenne (« true » ou « false ») ;
un tableau (contenant tout autre type JSON valide) ;
un dictionnaire (contenant tout autre type JSON valide) ;
la valeur null ;
la valeur undefined.
Pour en savoir plus sur le format JSON, consultez la rubrique Ă propos de lâutilisation de JSON dans Raccourcis.
En arriĂšre-plan, Raccourcis encode et dĂ©code automatiquement la valeur renvoyĂ©e afin dâassurer la communication entre le JavaScript et lâapp Raccourcis. Autrement dit, vous nâavez pas besoin dâappeler JSON.stringify(result)
avant dâappeler le gestionnaire dâachĂšvement.
Les valeurs renvoyĂ©es Ă©tant des chaĂźnes JSON, certaines dâentre elles seront difficilement exploitables. Par exemple, une fonction ou un nĆud nâaura pas de reprĂ©sentation utile encodĂ©e au format JSON. Dans ce cas, il est recommandĂ© de crĂ©er un tableau/dictionnaire contenant les valeurs compatibles JSON dont vous avez besoin.
Pour plus dâinformations concernant les nĆuds, consultez la page suivante : https://developer.mozilla.org/fr/Node ; pour en savoir plus sur les fonctions, consultez la page suivante : https://developer.mozilla.org/fr/Functions.
Remarque : comme un objet JavaScript est un simple dictionnaire, les objets de base se convertissent bien au format JSON.
Astuce : si vous ne voulez pas que lâaction ExĂ©cuter JavaScript sur une page web renvoie des donnĂ©es, vous pouvez appeler la fonction completion()
sans argument (car undefined
est un résultat valide). Cela revient à appeler completion(undefined)
.
Limite de temps de lâaction ExĂ©cuter JavaScript sur une page web
Comme toutes les extensions JavaScript dans Safari, lâaction ExĂ©cuter JavaScript sur une page web est soumise Ă une limite de temps et doit ĂȘtre terminĂ©e le plus vite possible. Les scripts JavaScript utilisant des fonctions synchrones risquent de ne pas se terminer Ă temps, notamment :
window.alert()
window.prompt()
window.confirm()
Les délais de plusieurs secondes, par exemple :
window.setTimeout(function() { completion(); }, 5000);
Si votre script JavaScript dĂ©passe la limite de temps, le raccourci ne pourra pas se terminer et un message dâerreur Expiration du dĂ©lai JavaScript apparaitra lorsque vous lâexĂ©cuterez.

Traitement des erreurs de syntaxe et dâexĂ©cution
Vous pouvez utiliser nâimporte quelle syntaxe prise en charge dans Safari pour crĂ©er un script JavaScript dans lâaction ExĂ©cuter JavaScript sur une page web. iOS 12 prend en charge les syntaxes JavaScript ECMA 6, y compris les boucles for of
et lâinstruction let
.
Dans lâapp Raccourcis, lâaction ExĂ©cuter JavaScript sur une page web vous aide Ă repĂ©rer les erreurs en procĂ©dant Ă une vĂ©rification syntaxique Ă©lĂ©mentaire avant dâexĂ©cuter le raccourci Ă partir de lâextension Safari.
Pendant la saisie du script dans le champ de texte, la mise en Ă©vidence de la syntaxe vous permet de vous assurer que votre code JavaScript est valide. Par exemple, si vous oubliez dâinclure les guillemets Ă la fin dâune chaĂźne, tout le texte qui suit celle-ci est mis en Ă©vidence.
Si la syntaxe de votre script est valide mais quâelle prĂ©sente une erreur dâexĂ©cution, lâaction ExĂ©cuter JavaScript sur une page web intercepte et affiche les exceptions. Par exemple, si votre script fait appel Ă une variable ou fonction qui nâexiste pas (comme shortcuts.completion()
), une erreur apparaĂźt Ă lâexĂ©cution.

Confidentialité et sécurité
Lorsque vous autorisez un raccourci Ă exĂ©cuter Javascript sur une page web, celui-ci peut accĂ©der Ă toutes les informations que contient cette page web, y compris des donnĂ©es potentiellement sensibles. Lâapp Raccourcis prend quelques mesures pour sâassurer que vos raccourcis JavaScript sont exĂ©cutĂ©s de façon sĂ©curisĂ©e et privĂ©e.
Lorsque vous exĂ©cutez un raccourci contenant lâaction ExĂ©cuter JavaScript sur une page web, une invite vous informe que le raccourci est sur le point dâinteragir avec la page web. Cela signifie que le raccourci peut accĂ©der Ă des donnĂ©es potentiellement sensibles de la page web, comme des mots de passe, des numĂ©ros de tĂ©lĂ©phone ou des informations de cartes bancaires.

Si vous touchez Autoriser, le raccourci sâexĂ©cute sur la page web indiquĂ©e. Si vous exĂ©cutez Ă nouveau le mĂȘme raccourci sur la mĂȘme page web, Raccourcis nâaffiche plus lâinvite. Cette autorisation est mĂ©morisĂ©e pour chaque paire raccourci-page web.
Une fois que vous avez autorisĂ© un raccourci Ă accĂ©der Ă une page web, Raccourcis prend une mesure supplĂ©mentaire pour vous protĂ©ger des scripts potentiellement malveillants en tĂ©lĂ©chargeant rĂ©guliĂšrement des mises Ă jour de dĂ©finitions de logiciels malveillants. Avant dâinteragir avec une page web, Raccourcis analyse le JavaScript, puis consulte les dĂ©finitions de logiciels malveillants. En fonction de cette Ă©valuation, Raccourcis reçoit lâinstruction dâautoriser le script, de le refuser ou dâafficher une autre invite avant dâautoriser lâexĂ©cution du raccourci.
Remarque : cette Ă©valuation est rĂ©alisĂ©e sur votre appareil ; le contenu de votre script JavaScript (dans le champ de texte de lâaction ExĂ©cuter JavaScript sur une page web) nâest pas envoyĂ© Ă un serveur externe pour analyse.
Si lâexĂ©cution du raccourci nâest pas autorisĂ©e, un message dâerreur en expliquant la raison apparaĂźt.
Important : il est recommandé de ne jamais exécuter un raccourci contenant un script JavaScript qui vous paraßt suspect.