
Introduction Ă lâaction « ExĂ©cuter JavaScript sur une page web » dans Raccourcis sur Mac
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 consultez 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 de rĂ©seau social 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. Avant de pouvoir exĂ©cuter JavaScript depuis un raccourci, vous devez activer le rĂ©glage. Consultez la rubrique RĂ©glages avancĂ©s de confidentialitĂ© et de sĂ©curitĂ© dans Raccourcis sur Mac.
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 sur Mac.
Ă 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 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 Changer la vitesse de la vidĂ©o (disponible dans la galerie) 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.
Pour en savoir plus sur lâexĂ©cution de raccourcis depuis Safari, consultez ExĂ©cuter un raccourci tout en travaillant sur le Mac.
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) ;
une valeur Null ;
une valeur Undefined.
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.
Remarque : comme un objet JavaScript est un simple dictionnaire, les objets de base se convertissent bien au format JSON.
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)
.
Pour en savoir plus sur le format JSON, consultez la rubrique Introduction Ă lâutilisation de JSON dans Raccourcis sur Mac.
Pour en savoir plus sur les NĆuds, consultez https://developer.mozilla.org/Node.
Pour en savoir plus sur les fonctions, consultez https://developer.mozilla.org/Functions.
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 ».
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.