Injection är att ladda löst kopplad kod från en extern källa och ge den utrymme för exekvering.

Jag hade tänkt avslöja hemligheterna om tekniken bakom en av våra mest progressiva produkter. Jajjas Super-Script (JSS) är ett Javascript laddat med injection, ett oerhört kraftfullt sätt att ladda kod. För att förstå varför det är något av en våt dröm för utvecklare av spår- och stödsystem till webbplatser behöver jag förstås förklara konceptet, men vi börjar med att definiera varför Javascript är intressant för oss.

Javascript

Javascript är ett interpreterat kodspråk designat för att exekvera i en sandlåda med väl avgränsade resurser. Det betyder exempelvis att Javascript inte behöver kompileras för olika plattformar som Windows, Mac eller Linux. Koden kan exekveras helt linjärt, steg för steg som många traditionella kodspråk, men den verkliga styrkan är asynkron exekvering där kodbitar läggs undan i minnet för att sedan aktiveras av olika händelser. Därför är webbläsare den perfekta sandlådan för Javascript, som där får arbeta med de väl avgränsade resurser som ett laddat dokument definierar. Händelserna i en webbläsare kan till exempel vara klick på en knapp eller att ett fält i ett formulär markeras för inmatning av text.

En av de viktigaste händelserna är när dokumentet är färdigladdat. Då kan det passa bra att knyta in kod som interagerar med de olika elementen i dokumentet genom att lägga till funktionalitet eller innehåll. Dessutom kan vi anta att förhållandet mellan antal laddade dokument och sidvisningar är ett till ett. På så vis kan vi använda Javascript för att spara statistik över besökare. Genom att identifiera besökare med hjälp av cookies kan du också analysera beteendemönster i navigering på webbplatsen. Det är så Google Analytics fungerar, med antagandet att ett enskilt besök på en hemsida har högst 30 minuter mellan olika sidladdningar från webbplatsen.

Förutom eventuella begränsningar i lagringsutrymme finns det egentligen ingen anledning att nöja sig med att spara enbart statistik över sidvisningar. Med Javascript kommer vi användarna in på bara skinnet och kan spara undan alla händelser som webbläsaren rapporterar på ett sådant vis att det i efterhand går att spela upp alla enskilda besök på en webbplats. Med den extrema mängd information vi då får kan man dessutom ta fram otroligt intressant statistik. En praktisk tillämpning skulle kunna vara att manuellt följa en eller ett par utvalda besökares aktiviteter för att i en omarbetad version av webbplatsen kunna ge besökare alternativ att enklare nå det de letar efter, baserat på ett antaget beteende. En annan tillämpning är att dynamiskt ladda in förslag till beslut eller navigering enligt ett antal anpassade regler, som exempelvis kan härledas från tidigare besökta sidor. Möjligheten att göra allt detta är en av många anledningar till varför Javascript är intressant som plattform.

Möjligheten att samla in statistik är fortfarande en av de största anledningarna till att använda sig av Javascript, även om validering och formatering av inmatning till formulär börjar bli allt vanligare. Vi befinner oss dock i ett paradigmskifte där laddning och kanske framförallt presentation med hjälp av Javascript håller på att bli mer intressant. Detta beror delvis på att sökmotorerna fortsätter att bli bättre på att hitta och indexera innehåll presenterat med hjälp av Javascript, men kanske framförallt för att förebilder som Twitter och Facebook anammat och förfinat koncepten. De stora aktörerna har redan satt standarden och snart följer den stora massan efter, men då behövs enkla verktyg och tydliga riktlinjer!

Injection

Injection är att ladda löst kopplad kod från en extern källa och ge den utrymme för exekvering. Troligast är tyvärr att du redan hört talas om (Code) Injection i dess negativa mening, eftersom det historiskt sett använts för att göra intrång i databaser och manipulera innehåll på webbplatser. Som skydd mot oönskad injection räcker det att inmatning filtreras av en funktion som känner igen ett antal varningssignaler och bryter ut eventuella kontrolltecken på ett vis så att de inte kan bli del av den kod som körs under huven. Denna typ av filtrering är dessutom något som ingår i de flesta ramverken för webbplatser utan speciell handpåläggning om du knackar egen kod, och om du använder dig av ett färdigt CMS behöver du antagligen inte oroa dig alls.

Inom objektorienterad programmering är injection ett populärt designmönster som kan användas för att konfigurera applikationer. Istället för att bygga in logik direkt i ett system lämnas en lucka för att ladda kod som uppfyller ett specifikt gränssnitt för den önskade logiken. Ofta är det endast små variabler som ändras, men det kan även vara fråga om avancerad skillnad i logik. På så vis behöver man inte bygga om ett system för att få olika funktionalitet i olika konfigurationer. Det räcker att mekanismen som laddar in kod väljer en annan källa för att implementera gränssnittet.

I webbplatser är gränssnittet som lämnas öppet för injection i princip obegränsat, vilket både ger stora möjligheter och ett stort ansvar för den som implementerar logiken. I ett dokument som laddats av en webbläsare går det nämligen utmärkt att fritt sätta upp en inladdningsmekanism för externa Javascript. Sådana kommer sedan kunna exekvera på samma vis som om de vore implementerade direkt i källkoden för dokumentet. Ett av det vanligast förekommande inladdningsscripten är det som laddar Google Analytics för webbstatistik och målspårning av besökare.

Jajja

Här på Jajja använder vi injection för att ladda in javascript-baserade produkter men har valt att inte låsa oss vid en hård koppling till varje enskild produkt. Eftersom det räcker med en enda ingång för att ladda kod behöver vi bara installera en version av JSS på kundernas webbplatser. Sedan går det utmärkt att vid behov haka på fler produkter utan ytterligare uppdateringar av hemsidan. Förutom månadsrapporten med webbstatistik som vi bjuder alla kunder på i vårt kundcenter, hanterar JSS även vår leadsrapport med statistik om besök från andra företag och inte minst, den senaste produkten avsedd för ökad konvertering på webbplatser. Konverteringsprodukten, som redan lanserats mjukt och nu börjar bli mogen för att skalas upp, är formulär som visas vid en “bra tidpunkt”. Tidpunkten baseras på den spårning av beteendemönster som jag berörde ytligt tidigare. Vi tror förstås inte att listan över våra Javascript laddade med injection kommer ta slut här… Spännande tider väntar!

Google

En rolig parentes är att sedan vi utvecklade JSS för dynamisk inladdning av Javascript har Google kommit på att just detta är värdefullt för de webbredaktörer som inte nödvändigtvis vill bygga om sina hemsidor från grunden. Därför erbjuder även de nu en gratis variant för administration av kod från olika källor, likt det verktyg vi använder internt för att aktivera produkter åt våra kunder. Läs gärna mer om Google Tag Manager om du är intresserad av en enkel konfiguration av externa mätskript på din webbplats. Som kund hos oss får du förstås motsvarande funktionalitet utan att behöva fundera på hur det fungerar.