Introducció a l’acció “Executar JavaScript a la pàgina web” a l’app Dreceres a l’iPhone o l’iPad
Pràcticament totes les pàgines web estan codificades amb JavaScript, un llenguatge de programació que crea efectes dinàmics als exploradors web, com ara animacions, menús interactius i la possibilitat de reproduir vídeo, entre altres efectes. Habitualment, quan visites per una pàgina web, no pots veure’n el JavaScript. No obstant això, si crees una drecera que contingui l’acció “Executar JavaScript a la pàgina web” i després executes la drecera des de l’app Safari, pots controlar el JavaScript de la pàgina web.
Les dreceres que executen el teu JavaScript personalitzat en una pàgina web tenen múltiples usos. Per exemple, pots crear dreceres que recuperin dades específiques d’una pàgina web i després incorporar aquestes dades en una tasca, com ara extreure l’horari d’una classe i després, afegir‑lo a l’app Calendari o exportar les dades dels membres d’un grup de d’una xarxa social i després, afegir aquestes dades a un full de càlcul.
També pots crear dreceres que et permetin modificar una pàgina web, com ara canviar el tipus de lletra del text de la pàgina web, o modificar a quina velocitat es reprodueix un vídeo. Per poder executar el JavaScript des d’una drecera, has d’activar el paràmetre. Consulta Configurar la privacitat i seguretat avançada de l’app Dreceres a l’iPhone o l’iPad.
Per obtenir informació sobre com utilitzar dreceres que executin JavaScript en una pàgina web, consulta Utilitzar l’acció “Executar JavaScript a la pàgina web” a l’app Dreceres a l’iPhone o l’iPad.
Sobre obtenir dades d’una pàgina web
L’acció “Executar JavaScript a la pàgina web” permet obtenir dades d’una pàgina web agafant tots els elements que compleixen determinats criteris, i després tornant a passar per aquests elements per fer una tasca amb les dades (o per inspeccionar els elements més detalladament).
Per exemple, per crear una llista de tots els elements d’imatge d’una pàgina web, utilitza:
var elements = document.querySelectorAll(".post");
En un altre exemple, per recuperar tots els elements de la classe “post”, utilitza:
var elements = document.querySelectorAll(".post");
Quan es crea una NodeList (llista de nodes), pots iterar per tots els elements (per filtrar encara més els elements o per afegir‑los a l’estructura de dades) utilitzant una estructura com aquesta:
var elements = ...;
for (let element of elements) {
// ...
}
Per obtenir més informació sobre com fer consultes als resultats de pàgines web, visita https://developer.mozilla.org/Selectors i https://developer.mozilla.org/SelectorAll.
Entrada de l’acció “Executar JavaScript a la pàgina web”
L’entrada de l’acció “Executar JavaScript a la pàgina web” ha de ser una pàgina web del Safari activa, és a dir, has d’executar la drecera des del full compartit (concretament, des del Safari, el SFSafariViewController o l’ASWebAuthenticationSession).
Quan s’executa una drecera des del full compartit, l’entrada de l’app Safari es passa a la primera acció de la drecera.
Malgrat que l’entrada de l’acció “Executar JavaScript a la pàgina web” ha de ser una pàgina web del Safari, pots introduir dades addicionals a l’acció per mitjà de les Variables màgiques. Per exemple, la drecera “Canviar la velocitat del vídeo” (disponible a la galeria) conté una acció “Executar JavaScript a la pàgina web” que modifica un vídeo d’una pàgina web. La velocitat de reproducció del vídeo es controla per mitjà de la variable Velocitat.
Per obtenir informació sobre com executar dreceres des del Safari, consulta Obrir una drecera des d’una altra app a l’iPhone o l’iPad.
Resultat de l’acció “Executar JavaScript a la pàgina web”
Per retornar dades, has de cridar el gestor de finalització al JavaScript, com ara completion(result)
. Com que el JavaScript s’utilitza habitualment amb patrons asíncrons, la crida és, intencionadament, no síncrona. D’aquesta manera, pots acabar l’acció de manera asíncrona. Per exemple, el següent és vàlid:
window.setTimeout(function() {
completion(true);
}, 1000);
El resultat de l’acció “Executar JavaScript a la pàgina web” és qualsevol tipus de dada JSON, com ara:
Strings
Nombres
Booleà (cert o fals)
Matriu (amb qualsevol altre tipus JSON vàlid)
Diccionari (amb qualsevol altre tipus JSON vàlid)
Nul
Sense definir
En segon pla, l’app Dreceres codifica i descodifica automàticament el valor retornat per a la comunicació entre el JavaScript i l’app Dreceres. Això vol dir que no has de cridar JSON.stringify(result)
abans de cridar el gestor de finalització.
Com que el valor retornat és JSON, determinats valors retornats no funcionaran bé. Per exemple, una funció o un Node no tindran una representació útil codificada amb JSON. En aquest cas, és recomanable crear una matriu/diccionari que contingui els valors compatibles amb JSON que necessites.
Nota: Com que amb el JavaScript un objecte és simplement un diccionari, els objectes bàsics es converteixen bé a JSON.
Si no vols retornar cap dada de l’acció “Executar JavaScript a la pàgina web”, pots cridar completion()
amb cap argument a la funció (perquè undefined
és un resultat vàlid). Això és igual que cridar completion(undefined)
.
Per obtenir més informació sobre JSON, consulta Introducció a la utilització d’arxius JSON a l’app Dreceres de l’iPhone i l’iPad.
Per obtenir informació sobre les Nodes, consulta https://developer.mozilla.org/Functions.
Per obtenir informació sobre les funcions, consulta https://developer.mozilla.org/Functions.
Límit de temps de l’acció “Executar JavaScript a la pàgina web”
Com passa amb totes les extensions del JavaScript al Safari, l’acció “Executar JavaScript a la pàgina web” està subjecta a un límit de temps i s’ha de dur a terme com més ràpidament millor. És possible que el JavaScript que fa servir funcions síncrones no finalitzi a temps, com ara:
window.alert()
window.prompt()
window.confirm()
Temps límit que duren diversos segons. Per exemple:
window.setTimeout(function() { completion(); }, 5000);
Si el JavaScript supera el límit de temps, la drecera no es podrà completar i apareixerà un missatge d’error de límit de temps del JavaScript quan executis la drecera.
Gestió d’errors de sintaxi i de l’entorn d’execució
Pots utilitzar qualsevol sintaxi compatible amb el Safari per escriure en JavaScript a l’acció “Executar JavaScript a la pàgina web”.
A l’app Dreceres, l’acció “Executar JavaScript a la pàgina web” t’ajuda a trobar errors fent una comprovació de sintaxi bàsica abans d’executar la drecera des de l’extensió del Safari.
A mesura que introdueixes el teu script al camp de text, el ressaltat sintàctic t’ajuda a garantir que el teu JavaScript és vàlid. Per exemple, si t’oblides de posar les cometes al final d’un string, es ressalta tot el text que hi ha després d’aquest string.
Si la sintaxi del teu script és vàlida però conté un error de l’entorn d’execució, l’acció “Executar JavaScript a la pàgina web” l’agafa i mostra les excepcions. Per exemple, si el teu script fa referència a una variable o funció que no existeix (com ara shortcuts.completion()
), es mostra un error en l’entorn d’execució.