![](https://help.apple.com/assets/5B9014F10946229C37C593B4/5B9014F50946229C37C593C7/es_ES/c10e8a839dc838a25d0feb0e9e428a0a.png)
Acerca de la acción “Ejecutar JavaScript en la página web” en Atajos
Casi todas las páginas web están programadas con JavaScript, un lenguaje informático que permite crear efectos dinámicos en los navegadores web, entre los que se encuentran las animaciones, los menús interactivos o las reproducciones de vídeo. Por lo general, el código JavaScript no se ve al navegar por un sitio web. Sin embargo, si creas un atajo que contiene la acción “Ejecutar JavaScript en la página web” y lo ejecutas desde la app Safari, puedes controlar el código JavaScript de una página web.
Los atajos para ejecutar tu código JavaScript personalizado en una página web tiene múltiples aplicaciones. Por ejemplo, puedes crear atajos para recuperar datos específicos de una página web e incorporar dichos datos a una tarea, como extraer los horarios de una clase y añadirlos a la app Calendario, o exportar los datos de los miembros de un grupo de Facebook y añadir esos datos a una hoja de cálculo.
Asimismo, puedes crear atajos que te permitan modificar una página web, como cambiar el tipo de letra del texto de la página o la velocidad a la que se reproduce un vídeo.
Para obtener información sobre cómo usar atajos que ejecuten JavaScript en una página web, consulta Usar la acción “Ejecutar JavaScript en la página web” en Atajos.
Acerca de la recuperación de los datos de una página web
La acción “Ejecutar JavaScript en la página web” permite recuperar datos de una página web seleccionando los elementos que cumplan determinados criterios y pasar por ellos repetidamente para realizar una tarea con los datos (o para inspeccionar mejor los elementos).
Por ejemplo, para crear una lista de cada una de las imágenes de una página web, escribe:
var elements = document.querySelectorAll("img");
Para recuperar todos los elementos con la clase “post”, escribe:
var elements = document.querySelectorAll(".post");
Una vez creada la lista NodeList, puedes pasar por los elementos repetidamente (para filtrarlos más o añadirlos a una estructura de datos) escribiendo algo como:
var elements = ...;
for (let element of elements) {
// ...
}
Para obtener más información sobre cómo consultar los resultados de páginas web, consulta https://developer.mozilla.org/Selectors y https://developer.mozilla.org/SelectorAll.
Entrada de la acción “Ejecutar JavaScript en la página web”
La entrada a la acción “Ejecutar JavaScript en la página web” debe ser una página web activa de Safari, lo que significa que debes ejecutar el atajo desde la extensión de acción de Atajos en la hoja para compartir (concretamente desde Safari, SFSafariViewController o ASWebAuthenticationSession).
Cuando un atajo se ejecuta desde la hoja para compartir, la entrada desde la app Safari se transfiere a la primera acción del atajo.
Aunque la entrada a la acción “Ejecutar JavaScript en la página web” debe ser una página web de Safari, puedes insertar datos adicionales a la acción mediante “Variables mágicas”. Por ejemplo, el atajo siguiente contiene una acción “Ejecutar JavaScript en la página web” que modifica un vídeo en una página web. La velocidad de reproducción del vídeo se controla mediante la variable de velocidad.
![El editor de atajos con una acción “Ejecutar JavaScript en la página web” que contiene una variable mágica.](https://help.apple.com/assets/5B9014F10946229C37C593B4/5B9014F50946229C37C593C7/es_ES/6f5a346885e0b87d27295d3ace104171.png)
Consejo: El atajo “Cambiar la velocidad del vídeo” está disponible en la galería.
Si la acción “Ejecutar JavaScript en la página web” no es la primera acción de tu atajo, aparecerá un mensaje de error al ejecutarlo.
![El editor de atajos con el mensaje de error “Ninguna página web”.](https://help.apple.com/assets/5B9014F10946229C37C593B4/5B9014F50946229C37C593C7/es_ES/1d2b2ae8b8222a6dcdfd689332147221.png)
Para corregir el problema, puedes añadir la acción “Obtener variable” y definir el parámetro correspondiente para que la página web de Safari transfiera su contenido a la acción “Ejecutar JavaScript en la página web”.
Para obtener información sobre cómo ejecutar atajos desde Safari, consulta Configurar y ejecutar atajos desde otra app.
Salida de la acción “Ejecutar JavaScript en la página web”
Para devolver datos, debes llamar al controlador de finalización de JavaScript, como completion(result)
. Puesto que JavaScript se suele usar con patrones asíncronos, la llamada no está sincronizada intencionadamente. De esta forma, se puede terminar la acción de forma asíncrona. Por ejemplo, el código siguiente es válido:
window.setTimeout(function() {
completion(true);
}, 1000);
La salida de la acción “Ejecutar JavaScript en la página web” es cualquier tipo de dato JSON válido, incluidos los siguientes:
string (cadena);
number (número);
boolean (booleano), verdadero o falso;
array (matriz), que contiene cualquier otro tipo de dato JSON válido;
dictionary (diccionario), que contiene cualquier otro tipo de dato JSON válido;
null (nulo);
undefined (indefinido).
Para obtener más información sobre JSON, consulta Sobre el uso de JSON en Atajos.
Entre bastidores, Atajos codifica y descodifica automáticamente los valores devueltos para establecer comunicación entre el código JavaScript y la app Atajos. Esto significa que no necesitas llamar a JSON.stringify(result)
antes de llamar al controlador de finalización.
Al obtener un valor JSON, algunos valores devueltos no funcionarán bien. Por ejemplo, una función o nodo no tendrá una representación útil codificada en JSON. En ese caso, se recomienda crear una matriz o diccionario que contenga los valores compatibles con JSON que necesites.
Para obtener más información sobre los nodos, consulta https://developer.mozilla.org/Node; para obtener más información sobre las funciones, consulta https://developer.mozilla.org/Functions.
Nota: Puesto que un objeto en JavaScript es solo un diccionario, los objetos básicos se convierten bien a JSON.
Consejo: Si no quieres que la acción “Ejecutar JavaScript en la página web” devuelva ningún dato, puedes llamar a completion()
sin argumentos en la función, ya que undefined
es una salida válida. Es lo mismo que llamar a completion(undefined)
.
Límite de tiempo de la acción “Ejecutar JavaScript en la página web”
Como sucede en todas las extensiones JavaScript de Safari, la acción “Ejecutar JavaScript en la página web” está supeditada a un límite de tiempo y debe completarse lo más rápido posible. Si el código JavaScript usa funciones asíncronas, incluidas las siguientes, podría no completarse a tiempo:
window.alert()
window.prompt()
window.confirm()
Tiempos límite de espera que duran varios segundos, como en este caso:
window.setTimeout(function() { completion(); }, 5000);
Si tu JavaScript supera el límite de tiempo, el atajo no se completará correctamente y aparecerá un mensaje de error de tiempo límite de espera agotado de JavaScript al ejecutarlo.
![El editor de atajos con el mensaje de error de tiempo límite de espera agotado de JavaScript.](https://help.apple.com/assets/5B9014F10946229C37C593B4/5B9014F50946229C37C593C7/es_ES/7c09da2429f8b5b3c7f1960fadaccf06.png)
Gestión de errores de tiempo de ejecución y sintaxis
Puedes usar cualquier sintaxis compatible con Safari para escribir código JavaScript en la acción “Ejecutar JavaScript en la página web”. iOS 12 es compatible con la sintaxis de JavaScript ECMA 6, incluidos los bucles for of
y let
.
En la app Atajos, la acción “Ejecutar JavaScript en la página web” ayuda a detectar errores mediante una comprobación de sintaxis básica antes de ejecutar el atajo desde la extensión de Safari.
A medida que se introduce el script en el campo de texto, el resaltado de la sintaxis ayuda a garantizar que lo que se escribe en JavaScript es válido. Por ejemplo, si te olvidas de incluir las comillas al final de una cadena, se resaltará todo el texto que hay a continuación de dicha cadena.
Si la sintaxis del script es válida, pero contiene un error de tiempo de ejecución, la acción “Ejecutar JavaScript en la página web” detecta y muestra las excepciones. Por ejemplo, si el script hace referencia a una variable o función que no existe, como shortcuts.completion()
, se mostrará un error de tiempo de ejecución.
![El editor de atajos con el mensaje de error “Excepción de JavaScript”.](https://help.apple.com/assets/5B9014F10946229C37C593B4/5B9014F50946229C37C593C7/es_ES/a3d657ad80f2432291ea93341bfe8ce7.png)
Privacidad y seguridad
Al permitir que un atajo ejecute JavaScript en una página web, dicho atajo puede acceder a toda la información de esa página web, incluidos los datos que podrían ser confidenciales. La app Atajos toma algunas medidas para asegurarse de que ejecutas tus atajos JavaScript de forma segura y privada.
Al ejecutar un atajo que contiene la acción “Ejecutar JavaScript en la página web”, se muestra un mensaje en el que se te informa de que el atajo está a punto de interactuar con la página web. Esto significa que el atajo puede acceder a datos de la página web que podrían ser confidenciales, como contraseñas, números de teléfono o información sobre las tarjetas de crédito.
![El editor de atajos con un mensaje para permitir al atajo ejecutarse en un domino concreto.](https://help.apple.com/assets/5B9014F10946229C37C593B4/5B9014F50946229C37C593C7/es_ES/765f11723239a09b94d626b9027fd543.png)
Tras pulsar Permitir, el atajo se ejecuta en la página web especificada. Si ejecutas de nuevo el mismo atajo en la misma página web, Atajos no vuelve a mostrar el mensaje. Este permiso se aplica siempre teniendo en cuenta el atajo y la página web.
Cuando hayas permitido el acceso de un atajo a una página web, Atajos tomará medidas adicionales para protegerte de scripts que podrían ser malintencionados descargando periódicamente definiciones de software malicioso actualizadas. Antes de interactuar con una página web, Atajos analiza el código JavaScript y luego consulta las definiciones de software malicioso. En función de esta evaluación, Atajos recibe la orden de permitir o no el script, o de mostrar otro mensaje antes de permitir que se ejecute el atajo.
Nota: Esta evaluación se lleva a cabo en tu dispositivo —el contenido del código JavaScript (en el campo de texto de la acción “Ejecutar JavaScript en la página web”) no se envía a ningún servidor externo para que lo analice—.
Si se impide la ejecución del atajo, aparecerá un mensaje de error explicativo.
Importante: Nunca debes ejecutar un atajo que contenga código JavaScript no fiable.