Sobre l’acció “Executar JavaScript a la pàgina web” a l’app Dreceres
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 navegues 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 Facebook 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 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.
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 (lliste 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 de l’extensió d’acció de l’app Dreceres al 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 següent 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.
Consell: La drecera per canviar la velocitat del vídeo està disponible a la Galeria.
Si l’acció “Executar JavaScript a la pàgina web” no és la primera acció de la drecera, apareixerà un missatge d’error quan executis la drecera.
Per corregir això, pots afegir una acció “Obtenir variable” i definir el paràmetre a la pàgina web del Safari perquè passi el contingut a l’acció “Executar JavaScript a la pàgina web”.
Per obtenir informació sobre com executar dreceres des del Safari, consulta Configurar i executar dreceres des d‘una altra app.
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
Per obtenir més informació sobre JSON, consulta Sobre la utilització de JSON a l’app Dreceres.
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.
Per obtenir més informació sobre els Nodes, consulta https://developer.mozilla.org/Node; per obtenir més informació sobre les funcions, consulta https://developer.mozilla.org/Functions.
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)
.
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”. L’iOS 12 és compatible amb la sintaxi JavaScript ECMA 6, també amb els bucles for of
i let
.
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ó.
Privacitat i seguretat
Quan permets que una drecera executi el Javascript en una pàgina web, aquesta drecera pot accedir a tota la informació de la pàgina, incloses dades que podrien ser personals. L’app Dreceres pren unes mesures mínimes per garantir que executes les dreceres JavaScript de manera segura i privada.
Quan executes una drecera que conté l’acció “Executar JavaScript a la pàgina web”, es mostra un avís que indica que la drecera està a punt d’interactuar amb la pàgina web. Això significa que la drecera pot accedir a dades que podrien ser personals des de la pàgina web, com ara contrasenyes, números de telèfon o informació de targetes de crèdit.
Quan hagis premut Permetre, la drecera s’executarà a la pàgina web especificada. Si tornes a executar la mateixa drecera a la mateixa pàgina web, l’app Dreceres no mostrarà la sol·licitud una altra vegada. Aquest permís es manté en una base per drecera i per pàgina web.
Després que hagis permès que una drecera accedeixi a una pàgina web, l’app Dreceres fa un pas addicional per protegir‑te encara més de possibles scripts maliciosos i descarrega periòdicament definicions de programari maliciós actualitzades. Abans d’interaccionar amb una pàgina web, l’app Dreceres analitza el JavaScript i, aleshores, consulta les definicions de programari maliciós. A partir d’aquesta avaluació, l’app Dreceres rep l’ordre de permetre l’script, denegar‑lo o mostrar una sol·licitud addicional abans de permetre l’execució de la drecera.
Aquesta avaluació es fa al teu dispositiu; el contingut del teu JavaScript (al camp de text de l’acció “Executar JavaScript a la pàgina web”) no s’envia a un servidor extern per analitzar‑lo.
Si s’impedeix l’execució de la drecera, apareixerà un missatge d’error explicatiu.
Important: No hauries d’executar mai una drecera que contingui JavaScript en què no confiïs.