Om handlingen Afvikle 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 surfer på et websted. Men når du opbygger en genvej, der indeholder handlingen Afvikle 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 en Facebook-gruppes medlemmer 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 Afvikle JavaScript på webside i Genveje.
Om hentning af data fra websider
Med handlingen Afvikle 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 Afvikle JavaScript på webside
Input til handlingen to the Afvikle JavaScript på webside skal være en aktiv Safari-webside. Det betyder, at du skal afvikle genvejen fra handlingsudvidelsen Genveje på 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 Afvikle 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 Afvikle 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.
Hvis handlingen Afvikl JavaScript på webside ikke er den første handling i din genvej, vises en fejlmeddelelse, når du afvikler genvejen.
Det kan du afhjælpe ved at tilføje handlingen Hente variabel og indstille dens parameter til Safari-websiden for at videreføre dens indhold til handlingen Afvikle JavaScript på webside.
I Indstil og afvikl genveje fra en anden app finder du oplysninger om, hvordan du afvikler genveje fra Safari.
Output fra handlingen Afvikle 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 Afvikle 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
Du kan få flere oplysninger om JSON i Om brug af JSON i en genvej.
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.
Der findes flere oplysninger om knudepunkter på https://developer.mozilla.org/Node; der findes flere oplysninger om funktioner på https://developer.mozilla.org/Functions.
Bemærk: Eftersom et objekt i JavaScript blot er en ordbog, giver en konvertering af grundlæggende objekter til JSON et godt resultat.
Tip: Hvis du ikke vil returnere nogen data fra handlingen Afvikle JavaScript på webside, kan du kalde completion()
uden et argument i funktionen (fordi undefined
er gyldigt output). Det svarer til at kalde completion(undefined)
.
Tidsgrænse for handlingen Afvikl JavaScript på webside
Handlingen Afvikl 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 Afvikle JavaScript på webside. iOS 12 understøtter JavaScript-syntaksen ifølge ECMA 6, inklusive for of
-sløjfer og let
.
I appen Genveje hjælper handlingen Afvikl 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 Afvikle 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 Afvikle 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.
Bemærk: Evalueringen foretages på din enhed. Indholdet af din JavaScript-kode (i tekstfeltet for handlingen Afvikl 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.