Introduksjon til handlingen Utfør JavaScript på nettside i Snarveier på Mac
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. Før du kan utføre JavaScript fra en snarvei, må du aktivere innstillingen. Les Avanserte personvern- og sikkerhetsinnstillinger i Snarveier på Mac.
Les om hvordan du bruker snarveier som utfører JavaScript på nettsider, under Bruk handlingen Utfør JavaScript på nettside i Snarveier på Mac.
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 Endre videohastighet-snarveien (tilgjengelig i galleriet) en Utfør JavaScript på nettside-handling som endrer en video på en nettside. Avspillingshastigheten til videoen styres av Hastighet-variabelen.
Hvis du vil vite mer om hvordan du utfører snarveier fra Safari, leser du Utfør en snarvei mens du jobber på Macen.
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 på Mac.
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.
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.