Introduksjon til handlingen Utfør JavaScript på nettside i Snarveier
De fleste nettsider bruker prosedyrer i form av JavaScript. Dette er et programmeringsspråk som brukes til å lage dynamiske effekter i nettlesere, deriblant animasjoner, interaktive menyer, videoavspilling og mer. Du vil normalt ikke se JavaScript når du viser en nettside. Du kan imidlertid kontrollere JavaScript som finnes på en nettside, ved å bygge en snarvei som inneholder Utfør JavaScript på nettside og deretter utføre snarveien fra Safari-appen.
Snarveier som utfører tilpassede JavaScript-prosedyrer på en nettside, har en rekke bruksområder. Du kan for eksempel opprette snarveier som henter ut spesifikk informasjon fra en nettside og deretter innlemmer informasjonen i en oppgave. Du kan for eksempel hente ut en timeplan og deretter legge den til i Kalender-appen eller eksportere medlemsinformasjon fra en sosiale medier-gruppe og deretter legge den til i et regneark.
Du kan også opprette snarveier som lar deg endre en nettside. Du kan for eksempel endre fonten som brukes på nettsiden eller endre avspillingshastigheten for en video.
Les om hvordan du bruker snarveier som utfører JavaScript på nettsider, under Bruk handlingen Utfør JavaScript på nettside i Snarveier.
Om henting av data fra nettsider
Med handlingen Utfør JavaScript på nettside kan du hente ut data fra en nettside ved å hente ut alle elementer som oppfyller visse kriterier, og gjenta dette for alle aktuelle elementer, for å utføre en oppgave på dataene (eller undersøke elementene nærmere).
Du kan for eksempel opprette en liste med alle bildeelementene på en nettside ved å bruke:
var elements = document.querySelectorAll("img");
Hvis du vil hente alle elementer med klassen «post» kan du bruke:
var elements = document.querySelectorAll(".post");
Når det er opprettet en NodeList, kan du repetere gjennom elementene (for å avgrense filtreringen ytterligere eller legge til elementer i datastrukturen) ved å for eksempel bruke:
var elements = ...;
for (let element of elements) {
// ...
}
Du finner mer informasjon om spørringer for nettsideresultater på https://developer.mozilla.org/Selectors og https://developer.mozilla.org/SelectorAll.
Inndata for handlingen Utfør JavaScript på nettside
Inndata som sendes til handlingen Utfør JavaScript på nettside, må være en aktiv Safari-nettside. Det vil si at du må utføre snarveien fra delingsarket (fra Safari, SFSafariViewController eller ASWebAuthenticationSession).
Når en snarvei utføres fra delingsarket, sendes inndata fra Safari-appen til den første handlingen i snarveien.
Selv om inndata til Utfør JavaScript på nettside-handlingen må være en Safari-nettside, kan du sette inn ytterligere data i handlingen ved å bruke magiske variabler. Som et eksempel inneholder snarveien nedenfor en Utfør JavaScript på nettside-handling som endrer en video på en nettside. Avspillingshastigheten til videoen styres av Hastighet-variabelen.
Tips: Snarveien Endre videohastighet er tilgjengelig i galleriet.
Hvis du vil vite mer om hvordan du utfører snarveier fra Safari, leser du Utfør en snarvei i en annen app.
Utdata for handlingen Utfør JavaScript på nettside
For å returnere data må du bruke completion-håndtereren i JavaScript, for eksempel completion(result)
. Kallet er ikke gjort synkront i og med at JavaScript vanligvis brukes med asynkrone mønstre. Dette gjør det mulig å fullføre handlingen asynkront. Her er et gyldig eksempel:
window.setTimeout(function() {
completion(true);
}, 1000);
Utdata fra Utfør JavaScript på nettside er en hvilken som helst gyldig JSON-datatype, deriblant:
Streng
Tall
Boolsk (sann eller usann)
Oppstilling (som inneholder en annen gyldig JSON-type)
Ordliste (som inneholder en annen gyldig JSON-type)
Null
Ikke definert
Snarveier koder og dekoder automatisk den returnerte verdien i bakgrunnen for å kommunisere mellom JavaScript og Snarveier-appen. Det betyr at du ikke trenger å bruke JSON.stringify(result)
før du bruker completion-håndtereren.
Siden returverdien er JSON, vil enkelte returverdier ikke fungere optimalt. En funksjon eller node har for eksempel ikke en brukbar JSON-kodet representasjon. I dette tilfellet anbefales det at du oppretter en oppstilling/ordbok som inneholder de JSON-kompatible verdiene du trenger.
Merk: JavaScript-objekter er bare ordbøker, og grunnleggende objekter vil derfor fungere bra i JSON-format.
Hvis du ikke vil returnere data fra Utfør JavaScript på nettside-handlingen, kan du bruke completion()
uten argumenter i funksjonen (fordi undefined
er gyldig som utdata). Dette er det samme som å bruke completion(undefined)
.
Hvis du vil ha mer informasjon om JSON, leser du Introduksjon til bruk av JSON i Snarveier.
Du finner mer informasjon om noder på https://developer.mozilla.org/Node.
Du finner mer informasjon om funksjoner på https://developer.mozilla.org/Functions.
Tidsbegrensning for Utfør JavaScript på nettside-handlingen
I likhet med alle andre JavaScript-tillegg i Safari, gjelder en tidsbegrensning for Utfør JavaScript på nettside-handlingen. Den må derfor fullføres raskest mulig. Det kan forekomme at JavaScript-prosdyrer som bruker synkrone funksjoner ikke klarer å fullføre på tiden, blant annet disse:
window.alert()
window.prompt()
window.confirm()
Tidsavbrudd som varer i flere sekunder. Eksempel:
window.setTimeout(function() { completion(); }, 5000);
Hvis JavaScript-prosedyren overskrider tidsbegrensningen, vil ikke snarveien bli fullført og du vil få opp en melding om JavaScript-tidsavbrudd når du utfører snarveien.
Håndtering av syntaks- og runtime-feil
Du kan bruke en hvilken som helst syntaks som det er støtte for i Safari når du skal skrive JavaScript i Utfør JavaScript på nettside-handlingen. iOS 13 og iPadOS støtter ECMA 6 JavaScript-syntaks, deriblant for of
-sløyfer og let
.
Handlingen Utfør JavaScript på nettside i Snarveier-appen hjelper deg med å finne feil ved å utføre en enkel syntakskontroll før du utfører snarveien fra Safari-tillegget.
Når du skriver inn prosedyren i tekstfeltet, hjelper syntaksformatering deg med å kontrollere at JavaScript-koden er gyldig. Hvis du for eksempel har glemt å ta med anførselstegn på slutten av en streng, framheves all teksten etter den strengen.
Hvis prosedyren har gyldig syntaks, men inneholder en runtime-feil, finner og viser Utfør JavaScript på nettside-handlingen unntakene. Hvis prosedyren for eksempel refererer til en variabel eller funksjon som ikke eksisterer (for eksempel shortcuts.completion()
), vil det bli vist en feilmelding når prosedyren utføres.
Personvern og sikkerhet
Når du tillater at en snarvei kan utføre JavaScript på en nettside, vil snarveien ha tilgang til all informasjon som finnes på den nettsiden, inkludert potensielt sensitive opplysninger. Snarveier-appen er bygd opp slik at JavaScript-snarveiene dine utføres på en sikker og privat måte.
Når du utfører en snarvei som inneholder Utfør JavaScript på nettside-handlingen, vises en melding om at snarveien er i ferd med å utføre handlinger på nettsiden. Dette innebærer at snarveien kan få tilgang til potensielt sensitive data fra nettsiden, deriblant passord, telefonnumre og kredittkortinformasjon.
Når du trykker på Tillat, utføres snarveien på den spesifiserte nettsiden. Snarveier vil ikke spørre deg om dette igjen hvis du utfører den samme snarveien på den samme nettsiden igjen senere. Tillatelsen fortsetter å gjelde for den spesifikke snarveien og nettsiden.
Når du har gitt en snarvei tilgang til en nettside, utfører Snarveier et ekstra trinn for å beskytte deg mot potensielt skadelige prosedyrer ved å jevnlig laste ned oppdaterte skadevaredefinisjoner. Før du utfører handlinger med en nettside, analyserer Snarveier JavaScript-koden og sjekker deretter mot skadevaredefinisjonene. Basert på denne evalueringen instrueres Snarveier-appen om å tillate eller avvise prosedyren eller om det skal stilles et ekstra spørsmål før snarveien kan utføres.
Denne evalueringen utføres på selve enheten – innholdet i JavaScript-prosedyren (i tekstfeltet i Utfør JavaScript på nettside-handlingen) vil ikke bli sendt til en ekstern tjener for å analyseres.
Hvis snarveien forhindres i å utføres, vises en feilmelding som forklarer hvorfor.
Viktig: Du bør aldri utføre en snarvei som inneholder JavaScript-kode du ikke stoler på.