2011-08-02 16 views
12

मैं JAWS 11 और IE8 के साथ सही ढंग से काम करने के लिए एक एरिया-लाइव क्षेत्र प्राप्त करने का प्रयास कर रहा हूं।एरिया-लाइव और JAWS

नीचे दिए गए कोड का उपयोग करके, जब मैं बटन क्लिक करता हूं तो मैं नए मूल्य की घोषणा करने के लिए JAWS प्राप्त कर सकता हूं, लेकिन व्यवहार वह नहीं है जो मैं अपेक्षा करता हूं।

JSFiddle of this example

<!DOCTYPE html> 
<html> 
<head></head> 
<body> 
    <button onclick="document.getElementById('statusbar').innerHTML = parseInt(document.getElementById('statusbar').innerHTML) + 1">Update</button> 
    <div id="statusbar" aria-live="polite">0</div> 
</body> 
</html> 

बटन के प्रत्येक क्लिक पर मेरे JAWS11/IE8 विन्यास का उपयोग करना, मैंने सुना है:

 
Click number HTML Value (after click) JAWS says 
------------ ------------------------- --------- 
1    1       "Update button 0" 
2    2       "1" 
3    3       "2" 

समस्या, और मेरे सवाल यह है: मैं जबड़े की घोषणा कैसे कर सकता हूँ एरिया-लाइव क्षेत्र के पिछले मूल्य के बजाय, एरिया-लाइव क्षेत्र का वर्तमान मूल्य?

मुझे यह भी रुचि होगी कि अन्य स्क्रीन पाठक इस कार्यक्षमता को कैसे संभालेंगे।

+0

एक ही समस्या [इस वीडियो का प्रदर्शन aria-लाइव] (http://www.youtube.com/watch?v=9nZnTdSAkH0#t=3m8s) में पाए जाते हैं नहीं लगता है - शायद यह मेरे विशिष्ट सेटअप के साथ कुछ करने के लिए है? –

उत्तर

12

आपका कोड सही है। जाहिर है, "1 पीछे" discovered रहा है। लिंक से, ऐसा लगता है कि aria-atomic="true" का उपयोग समस्या को ठीक कर सकता है। हालांकि, दिए गए उदाहरण IE9 और फ़ायरफ़ॉक्स में ठीक से काम करते हैं।

यदि आप पहले से ही उन पर ठोकर नहीं गए हैं, तो codetalks और accessibleculture.org पर परीक्षण-मामलों की जांच करें। इसके बारे में जागरूक होने के लिए बहुत सारे सूक्ष्म मतभेद हैं। परीक्षण विफल होने पर बस आश्चर्यचकित न हों! पिछले साल या उससे अधिक में, मैं कुछ (अपर्याप्त) चालों में आया हूं जो आपकी मदद कर सकते हैं।

विधि 1: जबड़े की role="alert"

alert भूमिका supposed to bearia-live="assertive" के बराबर है, लेकिन पुराने संस्करणों में यह ठीक से संभाल नहीं किया।

आप बिल्कुल IE7 या IE8 में जबड़े 10 का समर्थन करने के लिए देख रहे हैं, तो यह संभावना सबसे अच्छा दोनों भूमिका के साथ अलर्ट पर दोगुना करने के लिए है = "चेतावनी" और एरिया: फरवरी 2011, जिसमें कहा गया है कि से बाहर these examples की जाँच करें -Live = "मुखर"। हालांकि, यह कुछ हद तक अनावश्यक है, परिभाषा के अनुसार, चेतावनी भूमिका को एक जोरदार लाइव क्षेत्र के रूप में संसाधित किया जाना है, ऐसा करने से JAWS 10 को उन दो ब्राउज़रों में स्वचालित रूप से अपडेट की गई चेतावनी की सामग्री की घोषणा करने की अनुमति मिलती है।

फ़ायरफ़ॉक्स 4 और आईई 9 दोनों की आवश्यकता नहीं है।

<div id="statusbar" role="alert" aria-live="assertive"> 
    Contents will be spoken when changed 
</div> 

विधि 2:: लेकिन यह कुछ इस तरह होगा मजबूर कर ध्यान केंद्रित हैक

गतिशील पढ़ने में एक डोम तत्व बनाने और, आप "चाल" सबसे स्क्रीन पाठकों कर सकते हैं यह करने के लिए ध्यान देने के लिए मजबूर कर रहा द्वारा सामग्री। यह हैकिश है, लेकिन प्रभावी है ... और कुछ हद तक Create and Focus उदाहरण का बिंदु। इस तरह सरलीकृत कुछ है, तो आप कर सकते हैं:

<div id="statusbar" role="alert" tabindex="-1"></div> 

$('#statusbar') 
    .clear() 
    .append('<div>' + newString + '</div>') 
    .children().first().focus() 
; 

केवल छुपा/सामग्री दिखा बजाय वास्तव में काफी अच्छी तरह से समय की सबसे काम करता है। हालांकि, तत्व पर VoiceOver का फोकस लिंग है और फिर दिखाए जाने पर इसकी सामग्री नहीं बोलता है। इस प्रकार, इसे डीओएम से हटाकर अब के लिए सबसे बेवकूफ तरीका प्रतीत होता है।मुझे यह पसंद नहीं है, लेकिन चीजों की स्थिति है।

+0

ग्रेट उत्तर, धन्यवाद! आईरिया 8 और जेएडब्ल्यूएस 11 के साथ एरिया-लाइव = "विनम्र" और भूमिका = "चेतावनी" वास्तव में वर्तमान मूल्य (पिछले के बजाए) को पढ़ता है, हालांकि यह वर्तमान मान को दो बार पढ़ता है।

+0

@Daniel, IE8 पर अद्यतन के लिए धन्यवाद। सौभाग्य! –

0

यदि आप JAWS का उपयोग कर रहे हैं, तो मुझे लगता है कि आपको डिफ़ॉल्ट मोड को कॉन्फ़िगर करने की भी आवश्यकता है; क्योंकि स्क्रीन रीडर में "केवल पढ़ने" मोड होता है। प्रेस के माध्यम से इस समस्या को हल किया जा सकता है:

(सम्मिलित करें + z) केवल-पढ़ने वाले स्क्रीन पाठकों को चालू/बंद करने के लिए।

http://www.mozilla.org/access/qa/win-webcontent-jaws.html