2012-04-27 26 views
18

आप वाई-एआरआईए का उपयोग करके स्क्रीन पाठकों को कैसे सूचित करते हैं कि एक div अब दिखाई दे रहा है?वाईएआई-एआरआईए का उपयोग कर स्क्रीन पाठकों को कैसे सूचित करें कि एक div अब दिखाई दे रहा है

अगर हम एचटीएमएल मिला

<div id="foo">Present main content</div> 
<div id="bar" style="display: none;">Hidden content</div> 

और फिर हम

$('#foo').hide(); 
$('#bar').show(); 

कैसे हम स्क्रीन रीडर है कि वे अब दिखाई div के बारे में उपयोगकर्ता (स्वचालित रूप से सूचित करना चाहिए या संभवतः पर ध्यान केंद्रित करने को सूचित करना अब दृश्य div)?

उत्तर

31

आप स्क्रीन रीडर्स बताने के लिए है कि सामग्री अब दिखाई दे रहा है आम तौर पर की जरूरत नहीं है हो सकता है। aria-hidden का उपयोग अभ्यास में कोई फर्क नहीं पड़ता है, इसलिए मैं इसका उपयोग न करने का सुझाव दूंगा। यदि आप स्क्रीन रीडर द्वारा छुपा div की टेक्स्ट सामग्री की घोषणा करना चाहते हैं तो आप role=alert या aria-live=polite (उदाहरण के लिए) का उपयोग कर सकते हैं। आप इसे अद्यतन सामग्री के लिए उपयोग करेंगे, जिसे आप स्क्रीन रीडर को खोजने के लिए सामग्री स्थान पर जाने के बिना सुनना चाहते हैं। उदाहरण के लिए एक पॉप अप संदेश जो फ़ोकस प्राप्त नहीं करता है, लेकिन इसमें टेक्स्ट जानकारी शामिल होती है जो एक बटन दबाकर किसी क्रिया के बाद उपयोगकर्ता के लिए प्रासंगिक होती है।

अद्यतन: मैं लोग हैं, जो ARIA 1.0 विकसित में से एक के साथ चर्चा की है, वह एक अर्थ संकेत है कि सामग्री छिपा हुआ है के रूप में HTML5 hidden बजाय aria-hidden का उपयोग कर का सुझाव दिया। पुराने ब्राउज़र के लिए इसे सीएसएस display:none के साथ संयोजन में उपयोग करें। एचटीएमएलका समर्थन करने वाले ब्राउज़र उपयोगकर्ता एजेंट स्टाइल शीट में display:none का उपयोग करके इसे लागू करते हैं।

<div id="content" role="alert"> 
... 
</div> 

$("#content").show(); 

इस उपयोगकर्ता को सचेत होगा जब #content दिखाई देने लगता है:

+0

के उपयोग पर परीक्षण और सलाह मुझे भी दिलचस्पी है, जब कुछ दिखाया जाता है तो मैं भूमिका = चेतावनी का उपयोग कैसे कर सकता हूं? मैं सिर्फ उस विशेषता को फ्लाई पर बनाउंगा? (और एक तरफ ध्यान दें: http://www.html5accessibility.com/tests/form-labels.html के लिए तारीफ के बाद से मैंने इसे पढ़ा है, मैं हमेशा उन तकनीकों का उपयोग करता हूं) – fcalderan

+3

आप फ्लाई पर जोड़ सकते हैं या इसे पहले से ही कर सकते हैं छिपी हुई सामग्री, प्रदर्शन से परिवर्तन: प्रदर्शित करने के लिए कोई भी नहीं: भूमिका या चेतावनी के साथ तत्व को सामग्री के अतिरिक्त सामग्री को एक्सेस करने के लिए एक पहुंच योग्यता घटना और सामग्री की घोषणा की जाएगी। एक उदाहरण: [लिंक] http://dl.dropbox.com/u/377471/tests/ajax.html –

+1

प्रदान किए गए ड्रॉपबॉक्स स्टीव का उदाहरण लिंक ओएसएक्स माउंटेन शेर में वॉयस ओवर के साथ काम नहीं कर रहा है। नई सामग्री स्वचालित रूप से नहीं पढ़ी जाती है। – Karl

8

उपयोग aria-hidden

इंगित करता है कि तत्व और उसके वंश के सभी दृश्य लेखक द्वारा कार्यान्वित के रूप में नहीं कर रहे हैं या किसी भी उपयोगकर्ता के लिए समझ योग्य। संबंधित एरिया-अक्षम देखें।

यदि कोई तत्व केवल कुछ उपयोगकर्ता क्रिया के बाद दिखाई देता है, तो लेखकों को एरिया-छुपे हुए गुण को सत्य पर सेट करना होगा। जब तत्व प्रस्तुत किया जाता है, तो लेखकों को एरिया-छिपी हुई विशेषता को झूठी पर सेट करना होगा या विशेषता को हटा देना होगा, यह दर्शाता है कि तत्व दिखाई दे रहा है। कुछ सहायक प्रौद्योगिकियां सीधे डब्ल्यूओएम के माध्यम से वाईएआई-एआरआईए जानकारी तक पहुंचती हैं और ब्राउज़र द्वारा समर्थित प्लेटफ़ॉर्म पहुंच के माध्यम से नहीं। लेखकों को उस सामग्री पर Aria-hidden = "true" सेट करना चाहिए जो प्रदर्शित नहीं होता है, भले ही इसे छिपाने के लिए उपयोग की गई तंत्र के बावजूद। यह सहायक तकनीकों या उपयोगकर्ता एजेंटों को दस्तावेज़ में छिपा तत्वों को सही ढंग से छोड़ने की अनुमति देता है।

तो अपने कोड

$('#foo').hide().attr('aria-hidden', 'true'); 
$('#bar').show().attr('aria-hidden', 'false'); 
+1

यह वास्तव में काम करता है? हालांकि यह हो सकता है कि एरिया स्पेक कहता है, मेरी समझ यह है कि एरिया-छुपे हुए गुणों को वर्तमान में स्क्रीनreaders द्वारा अनदेखा किया जाता है; वे इसके बजाय दृश्यमान/प्रदर्शन सीएसएस गुणों को देखते हैं; किस मामले में। छुपाएं() /। शो() पर्याप्त है, और एरिया-छिपी हुई संपत्ति को भी सेट करने से कुछ भी अतिरिक्त नहीं होता है। किसी भी मामले में, वास्तविक समस्या यहां एक स्क्रीनreader को सूचित करने के बारे में कम है कि नई सामग्री दिखाई दे रही है (वे पहले ही जानते हैं कि डीओएम से), स्क्रीनश्रेडर को यह बताने के बारे में है कि नई दृश्य सामग्री को पढ़ने के लिए पर्याप्त महत्वपूर्ण है हाथोंहाथ। – BrendanMcK

+1

एचटीएमएल 5 [छुपे हुए और एरिया-छिपे हुए] (http://www.paciellogroup.com/blog/2012/05/html5-accessibility-chops-hidden-and-aria-hidden/) –

9

भूमिका के साथ सामग्री को टैग = "सचेत" यह एक चेतावनी घटना है जो स्क्रीन रीडर जब यह दिखाई देने लगता है का जवाब देंगे आग का कारण होगा।

एरिया-छुपा उपयोग किया जाना चाहिए जब आप स्क्रीन रीडर से कुछ छिपाना चाहते हैं, लेकिन इसे देखने वाले उपयोगकर्ताओं को दिखाएं। हालांकि देखभाल के साथ प्रयोग करें।यहाँ और अधिक के लिए देखें: http://www.456bereastreet.com/archive/201205/hiding_visible_content_from_screen_readers_with_aria-hidden/

2

मैं जब वे, एक पाठ क्षेत्र तत्व के चरित्र सीमा तक पहुंच रहे है, तो आप कैसे करने के लिए समझने की कोशिश कर रहे हैं स्क्रीन रीडर उपयोगकर्ताओं को सूचित करने के लिए कैसे आप भूमिका का उपयोग कर सकता है दिखा एक नमूना बनाया = "चेतावनी" चेतावनी भूमिका उपयोग करें, यह मदद मिल सकती है:

वहाँ यह करने के लिए अधिक है, लेकिन यहाँ कोड है जो चेतावनी का उत्पादन का छोटा सा हिस्सा है:

if (characterCount > myAlertTheshold) { 
     var newAlert = document.createElement("div"); /* using the native js because it's faster */ 
     newAlert.setAttribute("role", "alert"); 
     newAlert.setAttribute("id", "alert"); 
     newAlert.setAttribute("class","sr-only"); 
     var msg = document.createTextNode('You have ' + charactersRemaining +' characters of ' + myMaxLength + ' left'); 
     newAlert.appendChild(msg); 
     document.body.appendChild(newAlert); 
    } 

http://codepen.io/chris-hore/pen/emXovR