Jesper Tverskov, 31. december 2003
En af de store fordele ved at bruge første bogstav i linkteksten som kaldebogstav er, at kaldebogstavet kan genereres med kode. Konventionel visdom siger, at det bør gøres server-side. Ærgerligt at det er meget lettere med JavaScript.
Der er mange fordele ved altid at bruge linktekstens første bogstav som kaldebogstav:
I min artikel, Brug første bogstav som ACCESSKEY, kan du læse om de grundlæggende problemer ved brug af kaldebogstav.
Første bogstav som kaldebogstav virker kun i Internet Explorer. IE er den eneste browser, så vidt jeg ved, der har implementeret HTML accesskey på en måde, der kan gøre Internettet mere tilgængeligt for tastaturbrugere.
Internet Explorer tillader, at mange link kan dele det samme kaldebogstav, hvis det er nødvendigt. Kaldebogstavet flytter kun markøren til linket, der først aktiveres med Enter. Hvis du ikke lander på det rigtige link, bruger du blot kaldebogstavet igen. Det bringer dig videre til næste link med samme kaldebogstav.
IE's implementering af HTML accesskey er en god begyndelse. IE bruges af mere end 90 procent af brugerne i de fleste lande. I et land som Danmark er procentandelen næsten 99 procent. Hvis blot en håndfuld indflydelsesrige website implementerer første bogstav i linkteksten som kaldebogstav, tvinger det marginale browsere til at skrotte deres fuldstændigt ubrugelige implementeringer af HTML accesskey til fordel for Microsofts.
Første bogstav som kaldebogstav er et så overlegent koncept, at en browser som Mozilla har gjort det til en feature. Den kaldes Find As You Type. Tryk på en almindelig tast og browseren (Mozilla 1.6b) lader markøren hoppe til det første link, der indeholder tastens bogstav. Hvis tasten trykkes igen hopper markøren videre til næste link, der begynder med det bogstav. Det er lidt mere indviklet end beskrevet, og der er mange finesser, der kan tilpasses i en opsætningsfil. Som default bør Find As You Type kun gælde for links første bogstav.
Alle browsere bør implementere "Find As You Type". Det vil reducere behovet for HTML accesskey til praktisk talt ingen ting eller til særlige tilfælde. Alle browsere bør også implementere HTML accesskey sådan som IE for at gøre første bogstav som kaldebogstav mulig. Det vil give os de nødvendige redskaber til at lave kaldebogstaver, så vi kan håndtere enhver situation.
Ifølge konventionel visdom bør kaldebogstaver være en del af opmærkningen for at være tilrådighed for alle brugere. Hvis kaldebogstaver genereres client-side af JavaScript vil kaldebogstaver mangle hos nogle få brugere med browsere uden JavaScript eller hvor JavaScript er slået fra.
Best Practice er at generere kaldebogstaver server-side, men kun som tommelfingerregel. Næstbedste løsning er ofte den bedste i den virkelige verden eller i mange situationer eller mere end godt nok, når alt tages i betragtning. Der er mange fordele ved at generere HTML accesskeys client-side. Lad os first indikere problemerne server-side.
I teorien er det let at generere første bogstav som kaldebogstav server-side. Men det kræver langt mere arbejde at gøre det server-side end client-side. Lad os bruge websiderne på www.klapmusen.dk som eksempel.
På nogle af mine asp.net sider, i de såkaldte CODEBEHIND filer, er der nogle få link lavet med håndkraft. Her må jeg huske at indsætte accesskeys, og jeg må huske at forandre dem, hvis linkteksterne af en eller anden årsag forandres.
Nogle af CODEBEHIND filerne har mange link, der er genereret fra XML. Da er det let også at generere kaldebogstaver til linkene. Det kræver blot lidt string-manipulation at pille første bogstav ud af linkteksterne og at indsætte dem som kaldebogstaver. Men jeg skal huske at lave koden, der genererer kaldebogstaverne.
De fleste af min websider bruger først og fremmest asp.net og C# til at generere XHTML fra XML ved hjælp af XSLT. Her er det også let at generere kaldebogstaver, men jeg skal huske at indsætte ekstra kode, der næppe fremmer læseligheden af den samlede kode. Nogle af mine link eksisterer allerede i XML og skal kopieres direkte ud af XML-lageret. Her skal kaldebogstaverne indsættes med håndkraft, og de skal forandres med håndkraft, hvis linkteksterne af en eller anden grund forandres.
Det bør ikke undre, at et kaldebogstav af og til forsvinder i processen, eller at et kaldebogstav viser sig at være helt forkert. Det gælder ikke mindst for et eksperimentelt website, der konstant laves om og udvikles.
Det er så let og smukt at generere første bogstav som kaldebogstav med JavaScript, at det næsten gør ondt.
Det kræver kun nogle få linjer kode. Kopier og indsæt dem i dit eksisterende eksterne JavaScript, som dine filer allerede bruger til andre ting. Når kodelinjerne er indsat, er alle dine bekymringer om kaldebogstaver for alle eksisterende og fremtidige link forbi én gang for alle.
function accesskeys()
{
if (document.getElementsByTagName)
{
var anchors = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++)
{
var anchor = anchors[i];
anchor.accessKey = anchor.innerHTML.substring(0,1);
}
}
}
window.onload = accesskeys;
Hver gang du tilføjer en webside eller et link til en webside, er første bogstav som kaldebogstav allerede på plads. Hver gang du forandrer en linktekst, er kaldebogstavet allerede forandret tilsvarende. Selv hvis du har et gammelt website med hunderer af link, der i dag er uden kaldebogstav, kræver det kun nogle få minutter at tildele dem kaldebogstaver, hvis et eksternt JavaScript allerede er på plads.
Kaldebogstaver genereres kun, hvis browseren understøtter JavaScript, og hvis understøttelsen er slået til, og kun hvis det er en nyere browser, der understøtter W3C's standarder, bl.a. W3C DOM. Det testes med udtrykket: "if getElementsByTagName". "For"-løkken finder alle link, udtrykket "anchor.innerHTML.substring(0,1)" piller første bogstav ud af linkteksten, og udtrykket "anchor.accessKey =" gør bogstavet til kaldebogstav.
Det er Best Practice ikke at glemme nogen. Der skal også være plads til en tekstbrowser som Lynx (ingen JavaScript), til dovne eller uerfarne brugere med gammel teknologi og endog til skøre eller dårligt vejledte virusskræmte brugere, der har slået understøttelsen af JavaScript fra i verdens bedste browser.
Men det er også Best Practice at opmuntre brugerne til at opgradere til den nyeste teknologi. Hvis vi mener brugervenlighed og tilgængelighed alvorligt, skal vi altid opmuntre brugerne til at opgradere. Det er langt det bedste for brugerne. Intet sjofler svage brugere mere end at lade dem forsætte med forældet teknologi. Svage brugere fortjener det bedste, hvis de skal have en chance for at være med.
Det er aldrig forkert at lave websider, der er et godt argument for at opgradere. Opdaterede browsere, der følger standarderne, gavner alle brugere og ikke mindst svage brugere, gavner webdesignere, gavner supportafdelinger, gavner producenterne af browsere, og forbedrer sikkerheden.
Hvad med brugere med browsere, der ikke understøtter første bogstav som kaldebogstav, sådan som Internet Explorer gør? Eller sådan som Mozilla gør på sin egen indirekte måde med sin unikke "Find As You Type" feature? Lad disse brugere kræve bedre browsere af deres browserproducenter.
Således kan alle brugere slå et slag for et mere tilgængeligt Internet: Støt de bedste browsere, kræv altid endnu bedre browsere, drop dårlige eller forældede browsere.
Copyright © 2003 Klapmusen.dk
The document is made to be a resource. Use it. Link to it. The document will be maintained, the URL is stable.
Opdateret: 31-12-2003 11:06
Status:
Revision:
Debatten er lukket. Send mig en mail.