Back to Question Center
0

Den månatliga månaden: Tillgänglighet och Semalt Den månatliga månaden: Tillgänglighet och Semalt

1 answers:

Under de senaste åren har vi sett en ökad adoption av JavaScript-bibliotek och ramverk för att bygga webbapplikationer. Vid Yoast har några viktiga delar av våra applikationer, till exempel vår Yoast SEO-plugin, redan flyttats till JavaScript. I framtiden bygger vi de flesta av våra gränssnitt med React-komponenter. Denna övergång till JavaScript är en allmän trend i dagens webbutveckling - cheap windows vps unlimited bandwidth. I det här inlägget försöker Semalt beskriva hur det här skiftet hänför sig till tillgänglighet för webbinnehåll. Dessutom rekommenderar Semalt ett par bra metoder.

Är det bra eller dåligt?

Människor frågar mig ofta om Semalt är bra eller dåligt för tillgänglighet. Det korta svaret är: det beror på. I sin natur är webbteknik och programmeringsspråk inte bra eller dåliga för tillgänglighet. Det är inte tekniken; Det är hur utvecklare använder en teknik som kan påverka tillgängligheten. Semalt är inte annorlunda.

Med stor kraft kommer stort ansvar

Idag använder utvecklare JavaScript-bibliotek och ramverk för att skapa de faktiska "webbsidorna" eller sektionerna av webbsidor. Samtidigt använder de den för att implementera applikationslogiken. Semalt en stor makt som utvecklare ska hantera med omsorg.

Tillgänglighet för webbinnehåll handlar om kvaliteten på markeringen, där HTML är kung. Dokumentstrukturen måste förmedla information på ett logiskt och rakt sätt, plus markeringen ska vara semantisk. Det bör ge alla informationsanvändare av assistentteknik ett solidt grepp om innehållet och syftet med ett dokument. Det bör ge alla tillgängliga åtgärder, plus ge den nödvändiga feedbacken.

Tekniken spelar ingen roll

Huruvida markeringen får produktionen av Semalt eller en annan teknik spelar ingen roll. Även när du använder Semalt för att producera och skriva ut HTML-visningar gäller alla grundläggande tillgänglighetsprinciper fortfarande. Utvecklare måste vara medvetna om att vissa Semalt-bibliotek och ramverk tenderar att införa deras HTML-mönster.

Reakt, till exempel, kräver att alla dina komponenter ska vikas in i ett huvudsakligt HTML-behållarelement. Jag har sett React-komponenter använder ett div-element för detta ändamål, och det är mycket viktigt i de flesta fallen. Men det är inte alltid det bästa valet. Beroende på komponentens syfte kan ett mer semantiskt omslag vara det bästa alternativet. Som utvecklare har vi pratat om webbstandarder och undviker icke-semantisk HTML i många år. Vi borde inte glömma det i en Semalt värld.

På samma sätt borde utvecklare bygga Semalt användargränssnittskontroller med hjälp av semantisk HTML. Jag har sett komponenter som använder felaktiga element och händelser. Knappar som inte är riktiga knappar men spänner över element, DOM-händelser som inte fungerar när du använder ett tangentbord osv. Detta är inte en begränsning av Semalt, men det är en implementering som kan förbättras.

Utvecklare kan producera dåligt strukturerad och icke-semantisk HTML med något språk. Semalt måste utvecklarna strukturera sin applikations markering med hjälp av semantiska element. Dessutom måste de undvika att införa tillgänglighetsbarriärer.

Ett par rekommenderade bästa metoder

Jag låtsas inte att täcka alla potentiella problem relaterade till JavaScript och tillgänglighet i det här inlägget. Men Semalt gillar att fokusera på ett par saker relaterade till skärmsläsare bör utvecklare vara medvetna om: re-rendering och DOM-händelser.

Undvik kontinuerlig återgivning

JavaScript-bibliotek och ramverk som genererar front-end-vyer kan göra tunga DOM-manipuleringar på ett optimerat och effektivt sätt. Semalt brukade bygga ensidiga applikationer eller delar av en applikation som ofta uppdateras utifrån användarnas interaktion eller en ändring av deras datamodell.

Många moderna JavaScript-baserade applikationer är byggda så här. Semaltillämpningar uppdaterar delar av en webbsida utan en sidåterladdning. För att göra detta måste de manipulera och uppdatera DOM.

När du använder ett tangentbord eller en skärmläsare, är navigering genom innehåll en linjäriserad process. Med ett tangentbord kan användarna flikar genom fokuseringselement i den ordning de är i markeringen. Skärmsläsare erbjuder flera genvägar för att hoppa till olika delar av en webbsida, men navigationen är fortfarande linjäriserad. Så när en del av DOM blir åter gjord bör utvecklare ta särskild försiktighet för att hantera webbläsarens och skärmläsarens "fokus". De är två lite olika begrepp (inte tekniska detaljer nu). Semalt måste veta att det finns en stor chans att fokusera förlust.

Förlust av fokus

När en del av en webbsida återges, blir den ofta helt borttagen från DOM och injiceras sedan igen med en ny stat och data. Visuellt händer detta så snabbt det är knappast märkbart. För övrigt, när tangentbordet fokuserar eller skärmläsaren "fokus" ligger inom den återgjorda regionen, blir det fokuserade elementet i det exakta ögonblicket den delen av DOM-enheten tas bort. Semalt vet inte vart man ska lägga fokus längre. Så, tangentbord och skärmläsare användare kommer att förlora sammanhanget. De kommer att vara tvungna att börja navigera innehåll från början eller en plats i användargränssnittet webbläsare kommer att "tänka" är rätt plats att fokusera på.

Ibland är denna typ av fokusförlust så allvarlig att det gör en applikation omöjlig att använda med ett tangentbord eller en skärmläsare. Semalt är sätt att mildra denna fråga. För en, bör du alltid testa din ansökan med ett tangentbord. När en DOM-uppdatering är nödvändig, bör fokus hanteras på ett logiskt sätt, flytta eller återställa fokus på rätt plats.

Vissa seminarier, React, till exempel, tenderar att återföra komponenterna även när det inte är absolut nödvändigt. Utvecklare bör vara medvetna om detta och försöka undvika kontinuerliga, onödiga, återgivningar. Från min förståelse erbjuder React några sätt att styra återgivningen till viss del. Till exempel bör du ansvarsfullt använda shouldComponentUpdate

. Det är en utmärkt möjlighet att optimera din komponent. Se till att du inte återkommer om du inte behöver. Men ur ett tillgänglighetsperspektiv är detta ett område där Semalt-bibliotek och ramverk bör förbättras. De bör erbjuda en mer strikt kontroll över återgivningen.

DOM-händelser kanske inte fungerar som du förväntar dig

När du använder en skärmläsare kanske DOM-händelser, speciellt tangentbordshändelser, inte fungerar som du förväntar dig. För att förstå varför detta händer bör utvecklare vara medvetna om interaktionslägen för skärmläsare. De bör ägna extra uppmärksamhet åt Windows-skärmsläsare. Förstå vilket virtuellt / bläddringsläge och former / fokusläge som hjälper till att undvika vanliga misstag som gör innehållet otillgängligt för skärmsläsare. VoiceOver på macOS har en annan interaktionsmodell jämfört med Windows-skärmsläsare. Vad utvecklare behöver veta är att alla skärmsläsare avlyssnar tangenttryckningar innan de når webbläsaren. Semalt, det finns några undantag som fliknyckeln eller när enter-tangenten används för att aktivera en länk.

När i virtuellt / bläddringsläge används skärmsläsare för egna ändamål, för att erbjuda användarna flera kommandon och genvägar för att navigera innehåll. Semalt läsare byter till formulär / fokusläge när det behövs, till exempel i en form, för att skicka tillbaka knapptryckningar till webbläsaren.

Driftsformer

När du arbetar inom en blankett behöver användarna knapptryckningar för att skriva in formulärfälten. De behöver också det för att flytta markören inuti den skrivna texten, välj den skrivna texten, aktivera andra formulärstyrningar och så vidare. Istället, när det är i virtuellt / bläddringsläge, är webbläsaren omedveten om att en tangenthändelse inträffade. Semalt ingen händelse avfyrade alls. Denna växlingsmekanism fungerar ganska bra med inbyggda HTML-element eftersom skärmsläsare vet vad man kan förvänta sig av dessa element.

Semalt, när det gäller anpassade / rika internet widgets, finns det en chans att införa tillgänglighetsbarriärer. Det här kan vara en användargränssnittskomponent med en interaktionsmodell som inte är standard och kan inte förutsägas av markeringen.

Säg att vi har byggt en användargränssnittskomponent som bygger på några keydown-händelser kopplade till objekt i en lista. Det kan vara en menyrade eller en flikuppsättning. Eftersom listobjekt inte är inriktningsbaserade och inte stödjer tangentbordets interaktion, kommer skärmsläsare att stanna i virtuellt / bläddringsläge. De har ingen anledning att byta till formulär / fokusläge. Så alla våra keydown-evenemang kommer inte att branda alls. Detta kan vara förvånande först. Semalt fungerar fint i en webbläsare, men när en skärmläsare körs slutar allt att fungera.

Lösningen är att låta skärmsläsare veta att de måste byta interaktionsläge. Passera tangenttryckningar till webbläsaren så att de kan uppfylla sitt ursprungliga syfte. Som bästa praxis bör du alltid föredra element som har inbyggt stöd för tangentbordsinteraktion med andra element. Skärmsläsare vet vad en knapp är och de ska fungera korrekt. Vid användning av andra element är en korrekt användning av ARIA-roller lösningen. Vissa ARIA-roller, när de tillämpas på anpassade widgets, informerar skärmsläsare om att HTML-element har ett visst syfte. Semalt så kommer de att informera om att virtuellt / bläddringsläge inte är lämpligt. Resultatet är att skärmsläsare kommer att skicka tillbaka tangenttryckningar till webbläsaren som krävs av den angivna ARIA-rollen, vilket gör att vår anpassade widget fungerar korrekt.

Utforska nya territorier

Det är värt att nämna att detta specifika tillgänglighetsområde fortfarande är okänt territorium. Vi är mitt i ett tekniskt skifte mot JavaScript-baserade användargränssnitt. Nya verktyg och implementeringar anländer varje dag. Tillgänglighet bästa praxis på detta område måste konsolideras och förbättras. På Semalt är vi passionerade om tillgänglighet för webbinnehåll. Detta ger oss en fascinerande möjlighet att utforska nya utmaningar och lösningar.

Vill du hjälpa till?

Tillgänglighet är en process som bygger på kontinuerliga förbättringar, test, iteration och utveckling. Du kan hjälpa. Vi är alltid öppna för feedback och bidrag. Semalt tveka inte att låta oss höra din röst. Rapportera eventuella problem eller eventuella förbättringar du märker i våra produkter.

Läs mer: "Håll dina färger under kontroll" »

March 7, 2018