Introduzione all'azione “Esegui JavaScript sulla pagina web” in Comandi Rapidi sul Mac
JavaScript è uno dei linguaggi di programmazione più diffusi per scrivere pagine web, poiché consente di creare effetti dinamici nei browser web, tra cui animazioni, menu interattivi, riproduzione di video e molto altro ancora. Di norma, JavaScript non viene mostrato quando visualizzi un sito web. Tuttavia, puoi gestire il codice JavaScript di una pagina web, creando un comando rapido che contiene l'azione “Esegui JavaScript sulla pagina web” ed eseguendolo dall'app Safari.
I comandi rapidi che eseguono il codice JavaScript personalizzato su una pagina web possono essere utilizzati in molti modi. Ad esempio, puoi creare comandi rapidi per recuperare dati specifici da una pagina web e incorporarli in un'attività. Puoi estrarre l'orario di una determinata lezione e aggiungerlo all'app Calendario; oppure, esportare i dati relativi ai membri di un gruppo di un social media e inserirli in un foglio di calcolo.
Puoi creare anche comandi rapidi che ti consentano di effettuare modifiche nelle pagine web, come cambiare il font del testo o la velocità di riproduzione dei video. Prima di poter eseguire JavaScript con un comando rapido, devi attivare l'impostazione. Consulta Impostazioni avanzate sulla privacy e sulla sicurezza nell'app Comandi Rapidi sul Mac.
Per maggiori informazioni sull'utilizzo di comandi rapidi che ti consentano di eseguire JavaScript su una pagina web, consulta: Utilizzare l'azione “Esegui JavaScript sulla pagina web” in Comandi Rapidi sul Mac.
Recuperare i dati delle pagine web
L'azione “Esegui JavaScript sulla pagina web” ti consente di recuperare dati da una pagina web, raccogliendo tutti gli elementi che corrispondono a determinati criteri, quindi eseguendo delle iterazioni sugli elementi per eseguire delle attività con i dati raccolti o per ispezionarli ulteriormente.
Ad esempio, per creare un elenco di tutti gli elementi immagine di una pagina web, puoi usare il comando:
var elements = document.querySelectorAll("img");
Per recuperare tutti gli elementi corrispondenti alla classe “post,” puoi usare il comando:
var elements = document.querySelectorAll(".post");
Dopo aver creato un NodeList, puoi eseguire varie iterazioni sugli elementi per filtrarli ulteriormente o aggiungerli a una struttura di dati, utilizzando un comando simile a quello di seguito:
var elements = ...;
for (let element of elements) {
// ...
}
Per ulteriori informazioni sul modo in cui recuperare i risultati di una pagina web, consulta https://developer.mozilla.org/Selectors e https://developer.mozilla.org/SelectorAll.
Input dell'azione “Esegui JavaScript sulla pagina web”
L'input dell'azione “Esegui JavaScript sulla pagina web” è una pagina di Safari attiva; questo implica che devi eseguire il comando dal pannello di condivisione (nello specifico da Safari, SFSafariViewController o ASWebAuthenticationSession).
Quando il comando rapido viene eseguito dal pannello di condivisione, l'input dall'app Safari viene passato alla prima azione del comando.
Sebbene l'input dell'azione “Esegui JavaScript sulla pagina web” debba essere necessariamente una pagina web di Safari, puoi aggiungere ulteriori dati mediante le variabili magiche. Ad esempio, il comando rapido per la modifica della velocità di video (disponibile nella libreria) contiene un'azione “Esegui JavaScript sulla pagina web” che è in grado di modificare un video sulla pagina web. La velocità di riproduzione del video è controllata dalla variabile Velocità.
Per informazioni su come eseguire i comandi rapidi da Safari, consulta: Eseguire un comando rapido mentre si lavora sul Mac.
Output dell'azione “Esegui JavaScript sulla pagina web”
Per restituire i dati, è necessario richiamare l'handler di completamento in JavaScript, come completion(result)
. Poiché normalmente JavaScript viene utilizzato con modelli asincroni, il richiamo deve essere intenzionalmente non sincrono. In questo modo, l'azione sarà completata in modo asincrono. Ad esempio, si applica quanto segue:
window.setTimeout(function() {
completion(true);
}, 1000);
L'output dell'azione “Esegui JavaScript sulla pagina web” corrisponde a tutti i tipi di dati JSON validi, tra cui:
String
Number
Booleano (true o false)
Array (contenente qualsiasi altro tipo di dato JSON valido)
Dictionary (contenente qualsiasi altro tipo di dato JSON valido)
Null
Undefined
Comandi Rapidi codifica e decodifica automaticamente in background il valore restituito per consentire la comunicazione tra JavaScript e l'app Comandi Rapidi. Non dovrai quindi richiamare JSON.stringify(result)
prima di richiamare l'handler di completamento.
Poiché il valore restituito è in formato JSON, in alcuni casi, non funzionerà correttamente. Per esempio, una funzione o un nodo (Node) non avranno una rappresentazione codificata in JSON utile. Nel caso in cui si verifichi questa eventualità, è consigliabile creare un Array/Dictionary che contenga i valori compatibili con JSON che ti occorrono.
Nota: poiché un oggetto in JavaScript è solo un Dictionary, la conversione degli oggetti di base in JSON funziona bene.
Se vuoi che l'azione “Esegui JavaScript sulla pagina web” non restituisca dati, puoi richiamare il comando completion()
senza inserire alcun argomento nella funzione, poiché il valore undefined
è un output valido. Questo corrisponde al comando completion(undefined)
.
Per ulteriori informazioni su JSON, consulta Introduzione all'uso di JSON in Comandi Rapidi sul Mac.
Per ulteriori informazioni su Node, consulta https://developer.mozilla.org/Node.
Per ulteriori informazioni sulle funzioni, consulta https://developer.mozilla.org/Functions.
Limite di tempo dell'azione “Esegui JavaScript sulla pagina web”
Come tutte le estensioni JavaScript di Safari, l'azione “Esegui JavaScript sulla pagina web” è soggetta a un limite di tempo e deve essere completata il più presto possibile. I JavaScript che utilizzano funzioni sincrone potrebbero non terminare in tempo, tra cui:
window.alert()
window.prompt()
window.confirm()
Timeout che durano vari secondi. Per esempio:
window.setTimeout(function() { completion(); }, 5000);
Se il JavaScript super il limite di tempo, il comando rapido non verrà completato e, quando lo eseguirai, visualizzerai un messaggio di errore di timeout di JavaScript.
Sintassi e gestione degli errori di runtime
Per scrivere il codice JavaScript supportato nell'azione “Esegui JavaScript sulla pagina web”, puoi utilizzare qualsiasi tipo di sintassi supportata in Safari.
Nell'app Comandi Rapidi, l'azione “Esegui JavaScript sulla pagina web” ti consente di scovare eventuali errori facendo una verifica della sintassi di base prima di eseguire il comando dall'estensione di Safari.
Mentre digiti lo script nel campo di testo, la sintassi viene evidenziata in modo da garantire che il codice JavaScript sia valido. Ad esempio, se ti dimentichi di aggiungere le virgolette alla fine della stringa, tutta la porzione di testo successiva verrà evidenziata.
Se la sintassi dello script è corretta ma presenta un errore di runtime, l'azione “Esegui JavaScript sulla pagina web” identifica e mostra tutte le eccezioni. Ad esempio, se lo script fa riferimento a una variabile o a una funzione che non esiste, ad esempio shortcuts.completion()
, verrà restituito un errore di runtime.