Funktionsdetektering (webbutveckling)

Funktionsdetektering (även funktionstestning ) är en teknik som används i webbutveckling för att hantera skillnader mellan körtidsmiljöer (vanligtvis webbläsare eller användaragenter ), genom att programmatiskt testa efter ledtrådar om att miljön kan eller inte kan erbjuda viss funktionalitet. Denna information används sedan för att få applikationen att anpassa sig på något sätt för att passa miljön: att använda vissa API: er eller skräddarsy för en bättre användarupplevelse.

Dess förespråkare hävdar att det är mer pålitligt och framtidssäkert än andra tekniker som sniffning av användaragenter och webbläsarspecifika CSS-hack.

Tekniker

Ett funktionstest kan ta många former. Det är i princip vilken kod som helst som ger en viss grad av förtroende för att en nödvändig funktion verkligen stöds. Men i motsats till andra tekniker fokuserar funktionsdetektering vanligtvis på att utföra åtgärder som direkt relaterar till den funktion som ska detekteras, snarare än heuristik .

Eftersom JavaScript är det vanligaste skriptspråket i webbläsare [ citat behövs ] använder många funktionsdetekteringstekniker JavaScript för att inspektera DOM och lokal JavaScript-miljö.

Den enklaste tekniken är att kontrollera om det finns ett relevant objekt eller egenskap. Till exempel, Geolocation API (används för att komma åt enhetens kunskap om dess geografiska plats, möjligen erhållen från en GPS-navigeringsenhet ) exponerar en geolocation -egenskap på navigatorobjektet i DOM; vars närvaro antyder att Geolocation API stöds:

if ('geolocation' i navigatorn) { // Geolocation API stöds }

För en högre nivå av förtroende kommer vissa funktionstester att försöka anropa funktionen och sedan leta efter ledtrådar om att den fungerade korrekt. Till exempel kan ett test för stöd för cookies försöka ställa in ett värde som en cookie och sedan verifiera att det kan läsas tillbaka.

Oupptäckbara

Vissa webbläsarfunktioner anses oupptäckbara eftersom inga ledtrådar är kända för att ge tillräckligt förtroende för att en funktion stöds. Dessa beror ofta på att begränsad information tillgänglig för JavaScript-miljön i webbläsaren; i allmänhet måste funktioner exponeras via DOM på något sätt för att kunna upptäckas med JavaScript.

När oupptäckbara saker påträffas är det vanligt att vända sig till användaragentsniffning som en alternativ mekanism, eller att använda defensiv kodning för att minimera effekten om funktionen visar sig inte stöds.

Modernizr - projektet har ett register över kända oupptäckbara på deras wiki .

Se även