Introduktion til handlingen Start JavaScript på webside i Genveje
Instrukserne på næsten alle websider er skrevet i JavaScript, som er et programmeringssprog, der skaber dynamiske effekter i webbrowsere, herunder animation, interaktive menuer, videoafspilning m.m. Du ser normalt ikke JavaScript, når du kigger på et websted. Men når du opbygger en genvej, der indeholder handlingen Start JavaScript på webside, og derefter afvikler genvejen fra appen Safari, kan du styre en websides JavaScript.
Du kan bruge genveje, der afvikler din specielle JavaScript på en webside, til utallige formål. Du kan f.eks. oprette genveje, der henter bestemte data fra en webside og derefter integrerer dem i en opgave. Du kunne eksempelvis hente et kursusskema og derefter tilføje det i Kalender eller eksportere data om medlemmerne i en gruppe på de sociale medier og tilføje disse data i et regneark.
Du kan også oprette genveje, du kan bruge til at ændre en webside, f.eks. skifte skriften til websidens tekst eller den hastighed, en video afspilles med.
Der er flere oplysninger om brug af genveje, der afvikler JavaScript på en webside, i Brug handlingen Start JavaScript på webside i Genveje.
Om hentning af data fra websider
Med handlingen Start JavaScript på webside kan du hente data fra en webside ved at indsamle alle de elementer, der opfylder bestemte kriterier, og derefter gennemløbe elementerne for at udføre en opgave med dataene (eller undersøge elementerne nærmere).
Du kan f.eks. oprette en liste med alle billedelementerne på en webside ved at bruge:
var elements = document.querySelectorAll("img");
I et andet eksempel kan du hente alle elementer med klassen “post” ved at bruge:
var elements = document.querySelectorAll(".post");
Når der er oprettet et NodeList-objekt, kan du gennemløbe elementerne (for at filtrere dem yderligere eller føje dem til en datastruktur) ved at bruge noget i stil med dette:
var elements = ...;
for (let element of elements) {
// ...
}
Der er flere oplysninger om forespørgsel af websideresultater på https://developer.mozilla.org/Selectors og https://developer.mozilla.org/SelectorAll.
Input til handlingen Start JavaScript på webside
Input til handlingen Start JavaScript på webside skal være en aktiv Safari-webside. Det betyder, at du skal afvikle genvejen fra siden til delinger (mere specifikt fra Safari, SFSafariViewController eller ASWebAuthenticationSession).
Når genvejen afvikles fra siden til delinger, videreføres input fra appen Safari til den første handling i din genvej.
Selvom input til handlingen Start JavaScript på webside skal være en Safari-webside, kan du indsætte flere data i handlingen ved at bruge magiske variabler. Følgende eksempel på en genvej indeholder handlingen Start JavaScript på webside, som ændrer en video på en webside. Videoens afspilningshastighed styres af variablen Speed.
Tip: Genvejen Change Video Speed er tilgængelig i galleriet.
I Start en genvej fra en anden app finder du oplysninger om, hvordan du afvikler genveje fra Safari.
Output fra handlingen Start JavaScript på webside
Du skal kalde afslutningsrutinen i JavaScript, f.eks. completion(result)
, for at returnere data. Da JavaScript som regel bruges til asynkrone mønstre, er kaldet med vilje ikke synkront. Det giver dig mulighed for at afslutte handlingen asynkront. Følgende er f.eks. gyldigt:
window.setTimeout(function() {
completion(true);
}, 1000);
Output fra handlingen Start JavaScript på webside er alle gyldige JSON-datatyper, herunder:
Streng
Tal
Boolesk (sand eller falsk)
Matrice (indeholder enhver anden gyldig JSON-type)
Ordbog (indeholder enhver anden gyldig JSON-type)
Null
Ikke defineret
Genveje koder og afkoder automatisk din returværdi i baggrunden til kommunikation mellem JavaScript og appen Genveje. Det betyder, at du ikke behøver at kalde JSON.stringify(result)
, før afslutningsrutinen kaldes.
Da returværdien er JSON, fungerer visse returværdier ikke særlig godt. En funktion eller et knudepunkt har ikke en nyttig JSON-kodet repræsentation. I så fald anbefales det, at du opretter en matrice/ordbog, der indeholder de JSON-kompatible værdier, du har brug for.
Bemærk: Eftersom et objekt i JavaScript blot er en ordbog, giver en konvertering af grundlæggende objekter til JSON et godt resultat.
Hvis du ikke vil returnere nogen data fra handlingen Start JavaScript på webside, kan du kalde completion()
uden et argument i funktionen (fordi undefined
er gyldigt output). Det svarer til at kalde completion(undefined)
.
Du kan få flere oplysninger om JSON i Introduktion til brug af JSON i Genveje.
Du kan finde flere oplysninger om knudepunkter på https://developer.mozilla.org/Node.
Du kan finde flere oplysninger om funktioner på https://developer.mozilla.org/Functions.
Tidsgrænse for handlingen Start JavaScript på webside
Handlingen Start JavaScript på webside har, som alle JavaScript-udvidelser i Safari, en tidsgrænse, og skal afvikles så hurtigt som muligt. JavaScript, der bruger synkrone funktioner, afvikles muligvis ikke i tide, inklusive:
window.alert()
window.prompt()
window.confirm()
Timeouts, der varer flere sekunder – for eksempel:
window.setTimeout(function() { completion(); }, 5000);
Hvis dit JavaScript overskrider tidsgrænsen, vil genvejen ikke blive udført, og der vises en JavaScript-fejlmeddelse om timeout, når du afvikler genvejen.
Syntaks og håndtering af fejl under afvikling
Du kan bruge enhver syntaks, der understøttes i Safari, til at skrive JavaScript i handlingen Start JavaScript på webside. iOS 13 og iPadOS understøtter JavaScript-syntaksen ifølge ECMA 6, inklusive for of
-sløjfer og
. let
I appen Genveje hjælper handlingen Start JavaScript på webside dig med at finde fejl ved at foretage en grundlæggende syntakskontrol, før du afvikler genvejen fra Safari-udvidelsen.
Samtidig med at du indtaster dine instrukser i tekstfeltet, hjælper fremhævning af syntaks med til at sikre, at din JavaScript-instruks er gyldig. Hvis du f.eks. glemmer at skrive anførselstegnene sidst i en streng, fremhæves al teksten efter den pågældende streng.
Hvis syntaksen i din instruks er gyldig, men indeholder en afviklingsfejl, fanger handlingen Start JavaScript på webside undtagelserne og viser dem. Hvis din instruks f.eks. henviser til en variabel eller en funktion, der ikke eksisterer (f.eks. shortcuts.completion()
), vises en fejl under afviklingen.
Anonymitet og sikkerhed
Når du giver en genvej tilladelse til at afvikle JavaScript på en webside, kan genvejen få adgang til alle oplysninger på websiden, inklusive fortrolige data. Appen Genveje træffer nogle foranstaltninger for at sikre, at du afvikler dine JavaScript-genveje på en sikker og privat måde.
Når du afvikler en genvej, der indeholder handlingen Start JavaScript på webside, får du vist en besked om, at genvejen skal til at behandle websiden. Det betyder, at genvejen kan få adgang til data fra websiden, der måske er fortrolige, f.eks. adgangskoder, telefonnumre eller kreditkortoplysninger.
Når du trykker på Tillad, afvikles genvejen på den anførte webside. Hvis du afvikler samme genvej på samme webside igen, viser Genveje ikke spørgsmålet igen. Denne tilladelse gælder for hver genvej og hver webside.
Efter du har givet en genvej adgangstilladelse til en webside, træffer Genveje en ekstra sikkerhedsforanstaltning, for at beskytte dig yderligere mod potentielt ondsindede instrukser, ved regelmæssigt at downloade opdaterede malwaredefinitioner. Inden behandling af en webside analyserer Genveje JavaScript og konsulterer derefter malwaredefinitionerne. Ud fra denne evaluering instrueres Genveje om at tillade instruksen, afvise instruksen eller vise et spørgsmål mere, inden genvejen får tilladelse til at blive afviklet.
Evalueringen foretages på din enhed. Indholdet af din JavaScript-kode (i tekstfeltet for handlingen Start JavaScript på webside) sendes ikke til analyse på en ekstern server.
Hvis afviklingen af genvejen afvises, vises en fejlmeddelelse med en forklaring.
Vigtigt: Du bør aldrig afvikle en genvej, der indeholder JavaScript, du ikke har tillid til.