Acerca da ação “Executar JavaScript na página web” na aplicação Atalhos
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 do Facebook 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.
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.
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 extensão de ação Atalhos na 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 seguinte atalho 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.
Dica: O atalho Alterar velocidade do vídeo está disponível na Galeria.
Se a ação “Executar JavaScript na página web” não for a primeira ação no atalho, será apresentada uma mensagem de erro quando executar o atalho.
Para corrigir esta situação, pode adicionar uma ação “Obter variável” e definir o respetivo parâmetro para a página do Safari para passar os respetivos conteúdos para a ação “Executar JavaScript na página web”.
Encontrará informação sobre como executar atalhos a partir do Safari em Configurar e executar atalhos a partir de outra aplicação.
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
Encontrará mais informação acerca de JSON em Acerca da utilização de JSON na aplicação Atalhos.
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.
Para mais informações acerca dos nós, consulte https://developer.mozilla.org/Node; para mais informações acerca das funções, consulte https://developer.mozilla.org/Functions.
Nota: Visto que um objeto em JavaScript é apenas um dicionário, os objetos básicos convertem-se bem em JSON.
Dica: 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)
.
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”. O iOS 12 suporta a sintaxe JavaScript ECMA 6, incluindo ciclos for of
e let
.
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.
Privacidade e segurança
Quando permite que um atalho seja executado numa página web, esse atalho pode aceder a todas as informações nessa página web, incluindo dados possivelmente confidenciais. A aplicação Atalhos toma algumas medidas para garantir que executa os atalhos JavaScript de forma segura e privada.
Quando executa um atalho que contém a ação “Executar JavaScript na página web”, é apresentada a caixa de diálogo a informa que o atalho está prestes a interagir com a página web. Isto significa que o atalho pode aceder a dados possivelmente sensíveis da página web, tais como palavras-passe, números de telefone ou informação de cartão de crédito.
Assim que tocar em Permitir, o atalho é executado na página web especificada. Se executar o mesmo atalho na mesma página web, a aplicação Atalhos não mostra o aviso novamente. Esta permissão persiste num base base por atalho e por página web.
Depois de permitir que um atalho aceda a uma página web, a aplicação Atalhos vai mais além para o proteger de scripts possivelmente maliciosos, descarregando periodicamente definições de malware atualizadas. Antes de interagir com uma página web, a aplicação Atalhos analisa o JavaScript e, em seguida, consulta as definições de malware. Com base nesta avaliação, a aplicação Atalhos recebe instruções para permitir o script, rejeitar o script ou apresentar um pedido adicional antes de permitir que o atalho seja executado.
Nota: Esta avaliação é realizada no dispositivo — os conteúdos do JavaScript (no campo de texto da ação “Executar JavaScript na página web”) não são enviados para um servidor externo para análise.
Se o atalho for impedido de ser executado, é apresentada uma mensagem de erro com uma explicação.
Importante: Nunca deve executar um atalho que contenha JavaScript em que não confia.