Pořadí odkazů na stránce pomocí atributu TABINDEX

<txp:image id=„81“ />

Při vytváření přístupného webu by se nemělo zapomenout na vhodné nastavení tabelačního pořadí odkazů na stránce. Narazil jsem na problém, že mám v tomto pořadí zahrnuté i nezobrazené položky rozbalovacího menu – což je docela problém – kurzor se ztratí a než se uživatel dostane k další hlavní položce, tak se uTABeluje.

Teorie na úvod

Dle specifikace HTML 4.01 určuje atribut TABINDEX tabelační pořadí (tabelátorem se v prohlížečích přechází po aktivních prvcích jako jsou odkazy nebo prvky formuláře) elementu na stránce. Jeho hodnotou je číslo 0 – 32767.

Pořadí je podle atributu TABINDEX následující:

1. Elementy s nastavenou kladnou hodnotou atributu TABINDEX (od nejmenší po největší hodnotu – tyto hodnoty nemusí začínat jedničkou ani nemusí být sekvenční – 1, 2, 3, 4,… Pokud mají elementy stejnou hodnotu TABINDEX, rozhoduje jejich umístění v kódu stránky).

2. Elementy s nenastavenou hodnotou TABINDEX a elementy s hodnotou TABINDEX = 0.

3. Elementy (prvky formuláře), které jsou DISABLED se v pořadí vůbec nevyskytnou.

Nadále se budu v textu věnovat TABINDEXu jen z hlediska odkazů.

Praxe a rozčarování

Pro ověření těchto teoretických poznatků jsem připravil jednoduchý příklad, na kterém můžete vyzkoušet chování vašeho prohlížeče. Budu jedině rád, pokud mi v komentářích napíšete jeho chování (pakliže se bude lišit od těch, které uvádím v článku).

  • Mozilla Firefox (v. 1.0.2): chová se přesně dle standardu
  • Microsoft Internet Explorer (v. 4.01 – 6.0): chová se dle standardu s jednou výjimkou: pokud nastavíte hodnotu atributu na –1 bude tento element z pořadí vyjmut (viz MSDN), což je sice fajn, ale vznikne tak nevalidní dokument.
  • Opera (v. 7.2.1): Hodnotu –1 považuje nejspíše za 32767 tedy za maximum a prvek s tímto TABINDEXem tedy zařadí až na konec pořadí. Elementy s nulovou či nezadanou hodnotou TABINDEXu z pořadí úplně vynechá.

Nenašel jsem žádný způsob, jak validně vyjmout některé odkazy z tabelačního pořadí. Jediná možnost je nevyplňovat jim TABINDEX, čímž se dostanou až na konec pořadí.

Petr Václavek

Zobrazit příspěvky od Petr Václavek
Grafik na volné noze, kterého živí kreslení pro zahraniční microstock fotobanky, příležitostný fotograf, tvůrce dubánků, velký lenoch, čajopijec, a vášnivý čtenář.

4 Komentáře

  1. centi
    11. 4. 2005

    Používam Firefox1.0.2 a TABelátorom sa dostanem aj na linku s TABINDEX=„-1“. Takisto aj Netscape 7.2. Mozilla 1.8 linku vynechá.

    Odpovědět
  2. David Špinar
    25. 4. 2005

    Jak jsem uvedl v odpovědi na Váš dotaz na mém weblogu. Nedomnívám se, že je vůbec správné z tabelátorového pořadí jakýkoliv odkaz vůbec vyjímat. Protože nezávisle na Vašem záměru musí být každý odkaz v HTML stránce dostupný pomocí tabelátoru.

    Pokud chcete nějaký odkaz znepřístupnit klávesnici (nejspíše půjde o vnořenou větev rolovací navigace), pak celou větev generujte javascriptem. Pokud bude odkazem hlavní odkaz větve a z dané stránky bude dostupný zbytek, nebude problém s přístupností. A toto řešení má díky systematice rozkládání pageranku výhody i z hlediska SEO.

    Odpovědět
  3. Kozoroh
    2. 9. 2010

    Ahoj. řešil jsem teď intranetovou aplikaci na zadávání cen a tam by se mi vyjmutí z tabindexu velmi hodilo. Např. mám pole název zboží, počet a pak součty, které počítá JS. Potřeboval bych vyjmout součty z tabindexu, což nejde (FF). Idkyž jim přiřadím nulu, nebo maximum, tak po kliknutí z různých polí se to pak chová nevyzpytatelně. Muselo by se to měnit podle okolností přes JS.

    Odpovědět
  4. Kozoroh
    2. 9. 2010

    Oprava, nevšiml jsem si data příspěvků přede mnou. Nyní v roce 2010 mi –1 funguje i ve FF 3.6.3.

    Odpovědět

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Skočit na začátek stránky