Introduktion till åtgärden Kör JavaScript på webbsida på iPhone eller iPad
Nästan alla webbsidor innehåller element som styrs med hjälp av JavaScript. Det är ett programmeringsspråk som skapar dynamiska effekter i webbläsare, inklusive animeringar, interaktiva menyer, videouppspelning med mera. I allmänhet är JavaScript inte synligt för dig när du tittar på en webbplats. Genom att bygga en genväg som innehåller åtgärden Kör JavaScript på webbsida och sedan köra genvägen från Safari-appen kan du styra en webbsidas JavaScript.
Genvägar som kör dina anpassade JavaScript på en webbsida har otaliga användningsområden. Du kan till exempel skapa genvägar som hämtar specifika data från en webbsida och sedan integrerar dessa data i en uppgift. Du kan extrahera ett klasschema och sedan lägga till det i appen Kalender, exportera medlemsdata för en grupp i sociala medier och sedan lägga till dessa data i ett kalkylblad och mycket mer.
Du kan också skapa genvägar som gör det möjligt att ändra en webbsida, till exempel genom att ändra typsnittet i webbsidans text eller ändra uppspelningshastigheten för en video. Innan du kan köra JavaScript från en genväg måste du aktivera den inställningen. Se Avancerade inställningar för integritet och säkerhet i appen Genvägar på iPhone eller iPad.
Information om hur du använder genvägar som kör JavaScript på en webbsida finns i Använda åtgärden Kör JavaScript på webbsida i Genvägar på iPhone eller iPad.
Om att hämta webbsidodata
Med åtgärden Kör JavaScript på webbsida kan du hämta data från en webbsida genom att hämta alla element som matchar vissa villkor och sedan iterera genom dessa element för att utföra en uppgift (eller för att inspektera elementen ytterligare).
Om du till exempel vill skapa en lista över varje bildelement på en webbsida använder du:
var elements = document.querySelectorAll("img");
Om du istället vill hämta varje element med klassen "post” använder du:
var elements = document.querySelectorAll(".post");
När en NodeList har skapats kan du iterera genom elementen (för att ytterligare filtrera elementen eller lägga till elementen i en datastruktur) med hjälp av något i stil med:
var elements = ...;
for (let element of elements) {
// ...
}
Mer information om hur du granskar webbsideresultat finns på https://developer.mozilla.org/Selectors och https://developer.mozilla.org/SelectorAll.
Inmatning till åtgärden Kör JavaScript på webbsida
Inmatningen till åtgärden Kör JavaScript på webbsida måste vara en aktiv Safari-webbsida. Det innebär att du måste köra genvägen från delningsbladet (mer specifikt från Safari, SFSafariViewController eller ASWebAuthenticationSession).
När en genväg körs från delningsbladet överförs inmatningen från Safari-appen till den första åtgärden i genvägen.
Även om inmatningen till åtgärden Kör JavaScript på webbsida måste vara en Safari-webbsida kan du lägga till ytterligare data i åtgärden genom att använda magiska variabler. Exempelvis innehåller genvägen Ändra videohastighet (finns i galleriet) åtgärden Kör JavaScript på webbsida som ändrar en video på en webbsida. Uppspelningshastigheten för videon styrs av hastighetsvariabeln.
Lär mer om hur du kör genvägar från Safari i Köra en genväg från en annan app på iPhone eller iPad.
Utmatning från åtgärden Kör JavaScript på webbsida
För att kunna returnera data måste du anropa completion-hanteraren i JavaScript, t.ex. completion(resultat)
. Eftersom JavaScript vanligtvis används med asynkrona mönster är anropet avsiktligt inte synkront. På så sätt kan du avsluta åtgärden asynkront. Till exempel är följande giltigt:
window.setTimeout(function() {
completion(true);
}, 1000);
Utmatningen från åtgärden Kör JavaScript på webbsida är alla giltiga JSON-datatyper, inklusive:
Sträng
Tal
Booleska (sant eller falskt)
Array (som innehåller vilken annan giltig JSON-typ som helst)
Ordbok (som innehåller vilken annan giltig JSON-typ som helst)
Null
Odefinierat
Bakom kulisserna kodar och avkodar Genvägar automatiskt ditt returnerade värde för att kommunicera mellan JavaScript och appen Genvägar. Det betyder att du inte behöver anropa JSON.stringify(result)
innan du anropar completion-hanteraren.
Eftersom returneringsvärdet är JSON kommer vissa returneringsvärden inte att fungera bra. Till exempel kommer en funktion eller nod inte att ha en användbar JSON-kodad representation. Om så är fallet rekommenderas du att skapa en Array/Ordbok som innehåller de JSON-kompatibla värden du behöver.
Obs! Eftersom ett objekt i JavaScript helt enkelt är en ordbok fungerar det bra att konvertera grundläggande objekt till JSON.
Om du inte vill returnera några data från åtgärden Kör JavaScript på webbsida kan du anropa completion()
utan argument i funktionen (eftersom undefined
är en giltig utmatning). Detta är identiskt med att anropa completion(undefined)
.
Om du vill veta mer om JSON läser du Introduktion till användning av JSON i Genvägar på iPhone och iPad.
Mer information om noder finns på https://developer.mozilla.org/Node.
Mer information om funktioner finns på https://developer.mozilla.org/Functions.
Tidsgräns för åtgärden Kör JavaScript på webbsida
Liksom alla JavaScript-tillägg i Safari omfattas åtgärden Kör JavaScript på webbsida av en tidsgräns och ska slutföras så fort som möjligt. JavaScript som använder synkrona funktioner kan eventuellt inte slutföras i tid, till exempel:
window.alert()
window.prompt()
window.confirm()
Timeouter som varar i flera sekunder, till exempel:
window.setTimeout(function() { completion(); }, 5000);
Om ditt JavaScript överskrider tidsgränsen kommer genvägen inte att slutföras och ett JavaScript Timeout-felmeddelande visas när du kör genvägen.
Hantering av syntax- och körtidsfel
Du kan använda alla syntaxer som stöds i Safari för att skriva JavaScript i åtgärden Kör JavaScript på webbsida.
I appen Genvägar hjälper åtgärden Kör JavaScript på webbsida dig att upptäcka fel genom att göra en grundläggande syntaxkontroll innan du kör genvägen från Safari-tillägget.
När du matar in ditt skript i textfältet ser syntaxmarkeringen till att ditt JavaScript är giltigt. Om du till exempel glömmer att ta med citattecken i slutet av en sträng markeras all text som följer den strängen.
Om skriptets syntax är giltigt, men det innehåller ett körningsfel, kommer åtgärden Kör JavaScript på webbsida att fånga och visa undantagen. Om ditt skript exempelvis refererar till en variabel eller åtgärd som inte finns (till exempel shortcuts.completion()
) visas ett felmeddelande vid körning.