Cel używania „aria-labelledby” na już oznaczonych elementach wejściowych?

84

Wiele witryn demonstracyjnych ARIA używa kodu, takiego jak:

<label for="name" id="label-name">Your Name</label>
<input id="name" aria-labelledby="label-name" type="text">


Ale jaki jest cel używania aria-labelledbyatrybutu w tym przypadku? inputElement został już oznaczony przez labelelement, który jest przy użyciu foratrybutu, prawda?

Ian Y.
źródło
8
Dzięki @Sarfraz. Jednak ta strona nie ilustruje celu takiego użycia na już oznaczonych elementach wejściowych.
Ian Y.

Odpowiedzi:

69

Jest kilka dobrych przykładów jego użycia na stronach Mozilla Developer . Być może najlepszym z ich przykładów jest sytuacja, w której jest używany do powiązania menu podręcznego z elementem menu nadrzędnego - jest to przykład 7 na stronie:

<div role="menubar">  
    <div role="menuitem" aria-haspopup="true" id="fileMenu">File</div>  
    <div role="menu" aria-labelledby="fileMenu">  
        <div role="menuitem">Open</div>  
        <div role="menuitem">Save</div>  
       <div role="menuitem">Save as ...</div>  
       ...  
    </div>  
    ...  

Atrybuty ARIA wydają się być najbardziej przydatne w budowaniu dostępnych, bogatych aplikacji internetowych : o ile trzymasz się standardowego semantycznego HTML - używając formularzy ze standardowymi etykietami - nie powinieneś go wcale potrzebować: więc nie ma powodu, aby go używać para LABEL / INPUT. Ale jeśli budujesz „bogaty interfejs użytkownika” od podstaw (DIV i inne elementy niskiego poziomu z interaktywnością dodającą javascript), konieczne jest poinformowanie czytnika ekranu, jakie są intencje wyższego poziomu.

BrendanMcK
źródło
11
Dzięki @BrendanMcK. To, co powiedziałeś, jest prawdą. Zapytałem kogoś, kto pracuje dla ARIA i on również powiedział, że nie ma potrzeby używania w tym przypadku etykiety arii. Do oznaczania <input> s, powiedział, że używaj go tylko wtedy, gdy musimy oznaczyć <input> wieloma <label>. Oto przykład, który podał: html5accessibility.com/tests/mulitple-labels.html
Ian Y.
1
Z tą samą kontrolką można powiązać więcej niż jedną ETYKIETĘ, tworząc wiele odniesień za pośrednictwem atrybutu for . Ok, WAVE / WebAIM tego nie lubi i okazuje się, że jest problem z obsługą UA . Ale jego sugestia jest po prostu dziwna i nie sądzę, aby miała jakąkolwiek prawdziwą korzyść. Co najmniej IE <= 8 nie obsługuje wielu identyfikatorów w aria-labelledby .
sourcejedi
1
ten link MUSI być tutaj: developer.mozilla.org/en-US/docs/Accessibility/ARIA
Facundo Colombier
5

Zawsze pojawiają się problemy ze wsparciem UA z czymkolwiek nowym, dlatego programiści zwracają uwagę na stopniowe ulepszanie. Ta technika ARIA umożliwia pozbycie się atrybutu „za” i pozwala innym elementom stać się częścią bogatej formy. Techniki te staną się powszechną praktyką.

user2323922
źródło
1
Czy po kliknięciu skupia się na elemencie, jak robi to atrybut for? Chyba nie
Dominic
3
Całkowicie fałszywe. Atrybuty arii NIE mają zastępować innych atrybutów, ponieważ ich jedynym celem jest uczynienie elementów bardziej dostępnymi. Elementy NIE powinny być aktywowane z powodu jakiegokolwiek atrybutu arii.
Gust van de Wal
1
W mojej opinii powszechna praktyka (niestety?) Nadal nie jest prawdą. Najlepsza praktyka, może być lepszym wyborem. Może w przyszłości, kiedy powszechną praktyką jest, że wysoce zaawansowana sztuczna inteligencja pisze html zamiast ludzi :)
Michael