Introdução à ação “Executar JavaScript na página web” na aplicação Atalhos no Mac
Quase todas as páginas web são programadas com JavaScript, uma linguagem de programação que cria efeitos dinâmicos dentro dos navegadores web, incluindo animações, menus interativos, reprodução de vídeo, etc. Geralmente, o JavaScript não está exposto quando se navega num website. No entanto, ao criar um atalho que contenha a ação “Executar JavaScript na página web” e, em seguida, executar o atalho a partir do Safari, pode controlar o JavaScript de uma página web.
Os atalhos que executam o JavaScript personalizado numa página web tem inúmeras utilidades. Por exemplo, pode criar atalhos que obtêm dados específicos de uma página web e, em seguida, incorporam esses dados numa tarefa como, por exemplo, extrair o horário de uma disciplina e adicioná-lo à aplicação Calendário, ou exportar os dados dos membros de um grupo nas redes sociais e adicionar esses dados a uma folha de cálculo.
Também pode criar atalhos que lhe permitem modificar uma página web, como alterar o tipo de letra do texto da página web ou modificar a velocidade com um vídeo é reproduzido. Antes de poder executar JavaScript de um atalho, tem de ativar a definição. Consulte Definições avançadas de privacidade e segurança na aplicação Atalhos no Mac.
Encontrará informação acerca da criação de atalhos que executam JavaScript numa página web em Usar a ação “Executar JavaScript na página web” na aplicação Atalhos no Mac.
Acerca da obtenção de dados de página web
A ação “Executar JavaScript na página web” permite-lhe obter dados de uma página web capturando todos os elementos que correspondem a determinados critérios e, em seguida, iterar através desses elementos para realizar uma tarefa com os dados (ou inspecionar ainda mais os elementos).
Por exemplo, para criar uma lista de todos os elementos de imagem numa página web, use:
var elements = document.querySelectorAll("img");
Noutro exemplo, para obter todos os elementos da classe “publicar”, use:
var elements = document.querySelectorAll(".post");
Assim que é criado um NodeList, pode iterar através dos elementos (para filtrar ainda mais os elementos ou adicionar os elementos a uma estrutura de dados) usando algo como:
var elements = ...;
for (let element of elements) {
// ...
}
Para mais informações acerca da consulta dos resultados da página web, consulte https://developer.mozilla.org/Selectors e https://developer.mozilla.org/SelectorAll.
Entrada da ação “Executar JavaScript na página web”
A entrada para a ação “Executar JavaScript na página web” tem de ser uma página web do Safari ativa, o que significa que tem de executar o atalho a partir da folha de partilha (especificamente a partir de Safari, SFSafariViewController ou ASWebAuthenticationSession).
Quando um atalho é executado a partir da folha de partilha, a entrada do Safari é passada para a primeira ação do atalho.
Embora a entrada para a ação “Executar JavaScript na página web” tenha de ser uma página web do Safari, pode inserir dados adicionais na ação através de variáveis mágicas. Por exemplo, o atalho Alterar velocidade do vídeo (disponível na Galeria) que contém uma ação “Executar JavaScript na página web” que modifica um vídeo numa página web. A taxa de reprodução do vídeo é controlada pela variável Velocidade.
Encontrará informação sobre como executar atalhos no Safari em Executar um atalho enquanto trabalha no Mac.
Saída da ação “Executar JavaScript na página web”
Para obter dados, tem de chamar o gestor de conclusão em JavaScript, como, por exemplo, completion(result)
. Uma vez que o JavaScript é normalmente usado com padrões assíncronos, a chamada é intencionalmente não síncrona. Desta forma, pode terminar a ação de forma assíncrona. Por exemplo, o seguinte é válido:
window.setTimeout(function() {
completion(true);
}, 1000);
A saída da ação “Executar JavaScript na página web” é qualquer tipo de dados JSON válidos, incluindo:
Cadeia
Número
Booleano (verdadeiro ou falso)
Matriz (com qualquer outro tipo de JSON válido)
Dicionário (com qualquer outro tipo de JSON válido)
Zero
Não definido
Nos bastidores, os Atalhos codificam e descodificam automaticamente o valor devolvido para comunicar entre o JavaScript e a aplicação Atalhos. Isso significa que não necessita de chamar JSON.stringify(result)
antes de chamar o gestor de conclusão.
Visto que o valor devolvido é JSON, determinados valores devolvidos não funcionarão bem. Por exemplo, uma função ou nó não terá uma representação útil codificada em JSON. Neste caso, recomenda-se que crie uma Matriz ou um Dicionário que contenha os valores necessários compatíveis com JSON.
Nota: Visto que um objeto em JavaScript é apenas um dicionário, os objetos básicos convertem-se bem em JSON.
Se não quiser devolver nenhum dado da ação “Executar JavaScript na página web”, pode chamar completion()
sem nenhum argumento na função (porque undefined
é uma saída válida). Isto é idêntico a chamar completion(undefined)
.
Encontrará mais informação acerca de JSON em Introdução à utilização de JSON na aplicação Atalhos no Mac.
Encontrará mais informações sobre nós em https://developer.mozilla.org/Node.
Encontrará mais informações sobre funções em https://developer.mozilla.org/Functions.
Limite de tempo da ação “Executar JavaScript na página web”
Tal como todas as extensões JavaScript no Safari, a ação “Executar JavaScript na página web” está sujeita a um limite de tempo e deverá ser concluída o mais rapidamente possível. Um JavaScript que use funções síncronas poderá não ser concluído a tempo, incluindo:
window.alert()
window.prompt()
window.confirm()
Tempos limite excedidos que duram vários segundos, por exemplo:
window.setTimeout(function() { completion(); }, 5000);
Se o JavaScript exceder o limite de tempo, o atalho não será concluído e surgirá uma mensagem de erro de “Tempo limite de JavaScript excedido” quando executa o atalho.
Erro de manuseamento de sintaxe e tempo de execução
Pode usar qualquer sintaxe suportada no Safari para escrever JavaScript na acção “Executar JavaScript na página web”.
Na aplicação Atalhos, a ação “Executar JavaScript na página web” ajuda a detetar erros mediante uma verificação básica de sintaxe antes de executar o atalho a partir da extensão do Safari.
À medida que introduz o script no campo de texto, o realce de sintaxe ajuda a garantir que o JavaScript é válido. Por exemplo, caso se esqueça de incluir aspas no final de uma cadeia, todo o texto a seguir a essa cadeia é realçado.
Se a sintaxe do script for válida mas contiver um erro de execução, a ação “Executar JavaScript na página web” deteta e apresenta as exceções. Por exemplo, se o script fizer referência a uma variável ou função que não existe (como shortcuts.completion()
), é apresentado um erro durante a execução.