ARIA के बारे में जानकारी

ARIA और नॉन-नेटिव एचटीएमएल सिमेंटिक के बारे में जानकारी

Alice Boxhall
Alice Boxhall
Dave Gash
Dave Gash
Meggin Kearney
Meggin Kearney

अब तक, हमने नेटिव एचटीएमएल एलिमेंट का इस्तेमाल करने का सुझाव दिया है, क्योंकि इनसे आपको फ़ोकस, कीबोर्ड की सहायता, और पहले से मौजूद सिमेंटिक की सुविधा मिलती है. हालांकि, कभी-कभी ऐसा होता है कि आसान लेआउट और नेटिव एचटीएमएल काम नहीं करते. उदाहरण के लिए, फ़िलहाल आम तौर पर इस्तेमाल होने वाले यूज़र इंटरफ़ेस (यूआई) के लिए, कोई स्टैंडर्ड एचटीएमएल एलिमेंट नहीं है. इसका मतलब है कि पॉप-अप मेन्यू में जाने का विकल्प नहीं है. इसके अलावा, ऐसा कोई एचटीएमएल एलिमेंट भी नहीं है जो "उपयोगकर्ता को इस बारे में जल्द से जल्द पता होना चाहिए" जैसी सेमैंटिक विशेषता देता हो.

इस लेसन में, हम उन सेमेटिक्स को एक्सप्रेशन करने का तरीका जानेंगे जिन्हें एचटीएमएल खुद से एक्सप्रेशन नहीं कर सकता.

वेब ऐक्सेसibiliti इनिशिएटिव के ऐक्सेस किए जा सकने वाले रिच इंटरनेट ऐप्लिकेशन के लिए स्पेसिफ़िकेशन (WAI-ARIA या सिर्फ़ ARIA) का इस्तेमाल, ऐक्सेस करने से जुड़ी उन समस्याओं को हल करने के लिए किया जा सकता है जिन्हें नेटिव एचटीएमएल की मदद से मैनेज नहीं किया जा सकता. यह एलिमेंट को सुलभता ट्री में बदलने के तरीके में बदलाव करने वाले एट्रिब्यूट तय करने की सुविधा देता है. आइए, एक उदाहरण देखें.

नीचे दिए गए स्निपेट में, हमने सूची के आइटम का इस्तेमाल कस्टम चेकबॉक्स के तौर पर किया है. CSS "चेकबॉक्स" क्लास, एलिमेंट को ज़रूरी विज़ुअल विशेषताएं देती है.

<li tabindex="0" class="checkbox" checked>
    Receive promotional offers
</li>

यह सुविधा उन लोगों के लिए ठीक है जो देख सकते हैं. हालांकि, स्क्रीन रीडर इस बात का संकेत नहीं देगा कि एलिमेंट को चेकबॉक्स के तौर पर इस्तेमाल किया गया है. इसलिए, हो सकता है कि कम दृष्टि वाले लोग एलिमेंट को पूरी तरह देखने से चूक जाएं.

ARIA एट्रिब्यूट का इस्तेमाल करके, हम एलिमेंट को छूटी हुई जानकारी दे सकते हैं, ताकि स्क्रीन रीडर उसे सही तरीके से समझ सके. यहां हमने role और aria-checked एट्रिब्यूट जोड़े हैं, ताकि एलिमेंट को साफ़ तौर पर चेकबॉक्स के तौर पर पहचाना जा सके और यह बताया जा सके कि यह डिफ़ॉल्ट रूप से चुना गया है. सूची आइटम अब सुलभता ट्री में जोड़ दिया जाएगा और स्क्रीन रीडर उसे चेकबॉक्स के रूप में सही तरीके से रिपोर्ट कर देगा.

<li tabindex="0" class="checkbox" role="checkbox" checked aria-checked="true">
    Receive promotional offers
</li>

ARIA, स्टैंडर्ड डीओएम सुलभता ट्री में बदलाव करके और उसे बेहतर बनाकर काम करता है.

स्टैंडर्ड डीओएम सुलभता ट्री.
सुलभता के लिए ARIA टूल से बेहतर बनाया गया ट्री.

ARIA की मदद से, पेज पर मौजूद किसी भी एलिमेंट के लिए, सुलभता ट्री में थोड़ा (या काफ़ी) बदलाव किया जा सकता है. हालांकि, यह सिर्फ़ इस एलिमेंट में बदलाव करता है. ARIA किसी भी एलिमेंट के बुनियादी व्यवहार को बेहतर नहीं बनाता. यह एलिमेंट को फ़ोकस करने लायक नहीं बनाता या उसे कीबोर्ड इवेंट लिसनर नहीं देता. यह सुविधा अभी भी हमारे डेवलपमेंट टास्क का हिस्सा है.

यह समझना ज़रूरी है कि डिफ़ॉल्ट सिमेंटिक्स को फिर से तय करने की ज़रूरत नहीं है. स्टैंडर्ड एचटीएमएल <input type="checkbox"> एलिमेंट के सही तरीके से एलान किए जाने के लिए, role="checkbox" ARIA एट्रिब्यूट की ज़रूरत नहीं होती. भले ही, इसका इस्तेमाल किसी भी तरह से किया जा रहा हो.

यह भी ध्यान देने वाली बात है कि कुछ एचटीएमएल एलिमेंट पर, ARIA भूमिकाओं और एट्रिब्यूट का इस्तेमाल करने से जुड़ी पाबंदियां होती हैं. उदाहरण के लिए, हो सकता है कि स्टैंडर्ड <input type="text"> एलिमेंट में कोई दूसरी भूमिका/एट्रिब्यूट लागू न हो.

ज़्यादा जानकारी के लिए, एचटीएमएल स्पेसिफ़िकेशन में ARIA देखें.

आइए, देखें कि ARIA में और कौनसी सुविधाएं हैं.

ARIA क्या कर सकता है?

जैसा कि आपने चेकबॉक्स के उदाहरण में देखा, ARIA मौजूदा एलिमेंट के सेमेटिक्स में बदलाव कर सकता है या उन एलिमेंट में सेमेटिक्स जोड़ सकता है जिनमें कोई नेटिव सेमेटिक्स मौजूद नहीं है. इससे ऐसे सिमैंटिक पैटर्न भी दिख सकते हैं जो एचटीएमएल में मौजूद नहीं होते. जैसे, मेन्यू या टैब पैनल. आम तौर पर, ARIA की मदद से विजेट टाइप के ऐसे एलिमेंट बनाए जा सकते हैं जो सिर्फ़ एचटीएमएल की मदद से नहीं बनाए जा सकते.

  • उदाहरण के लिए, ARIA ऐसे अतिरिक्त लेबल और जानकारी वाला टेक्स्ट जोड़ सकता है जो सिर्फ़ सहायक टेक्नोलॉजी एपीआई के सामने दिखता है.
<button aria-label="screen reader only label"></button>
  • ARIA, एलिमेंट के स्टैंडर्ड/चाइल्ड कनेक्शन को बढ़ाने वाले एलिमेंट के बीच सिमैंटिक संबंध को बता सकता है. जैसे, किसी खास इलाके को कंट्रोल करने वाला कस्टम स्क्रोलबार.
    <div role="scrollbar" aria-controls="main"></div>
    <div id="main">
    . . .
    </div>
  • साथ ही, ARIA की मदद से पेज के कुछ हिस्सों को "लाइव" किया जा सकता है, ताकि वे बदलाव होने पर, सहायक टेक्नोलॉजी को तुरंत सूचना दे सकें.
    <div aria-live="polite">
      <span>GOOG: $400</span>
    </div>

ARIA सिस्टम का एक मुख्य हिस्सा, भूमिकाओं का कलेक्शन है. सुलभता की शर्तों में भूमिका, किसी यूज़र इंटरफ़ेस पैटर्न के लिए कम शब्दों में बताने वाला इंडिकेटर होती है. ARIA पैटर्न की शब्दावली देता है, जिसका इस्तेमाल हम किसी भी एचटीएमएल एलिमेंट पर role एट्रिब्यूट की मदद से कर सकते हैं.

जब हमने पिछले उदाहरण में role="checkbox" को लागू किया था, तब हम मददगार टेक्नोलॉजी को बता रहे थे कि एलिमेंट को "चेकबॉक्स" पैटर्न को फ़ॉलो करना चाहिए. इसका मतलब है कि हम यह गारंटी देते हैं कि इसकी स्थिति 'चुनी गई' होगी (यानी चुनी गई या नहीं चुनी गई). साथ ही, इस स्थिति को माउस या स्पेसबार का इस्तेमाल करके टॉगल किया जा सकता है, ठीक उसी तरह जैसे स्टैंडर्ड एचटीएमएल चेकबॉक्स एलिमेंट की स्थिति को टॉगल किया जाता है.

असल में, स्क्रीन रीडर के इस्तेमाल में कीबोर्ड इंटरैक्शन की सुविधा का बहुत ज़्यादा इस्तेमाल होता है. इसलिए, यह पक्का करना बहुत ज़रूरी है कि कस्टम विजेट बनाते समय, role एट्रिब्यूट हमेशा tabindex एट्रिब्यूट के साथ ही लागू किया जाए. इससे यह पक्का होता है कि कीबोर्ड इवेंट सही जगह पर जाएं और जब फ़ोकस किसी एलिमेंट पर जाए, तो उसकी भूमिका सही तरीके से बताई जाए.

ARIA स्पेसिफ़िकेशन में, role एट्रिब्यूट और उससे जुड़े ARIA एट्रिब्यूट के लिए संभावित वैल्यू की टैक्सोनॉमी के बारे में बताया गया है. इन वैल्यू का इस्तेमाल, उन भूमिकाओं के साथ किया जा सकता है. यह ARIA रोल और एट्रिब्यूट के साथ काम करने के तरीके के बारे में पूरी जानकारी का सबसे अच्छा सोर्स है. साथ ही, यह भी बताया गया है कि इनका इस्तेमाल ब्राउज़र और सहायक टेक्नोलॉजी के साथ कैसे किया जा सकता है.

ARIA की सभी उपलब्ध भूमिकाओं की सूची.

हालांकि, यह स्पेसिफ़िकेशन बहुत ज़्यादा बड़ा है. इसे समझने के लिए, एआरआई लेखन के तरीकों से जुड़ा दस्तावेज़ पढ़ें. इसमें, उपलब्ध ARIA रोल और प्रॉपर्टी के इस्तेमाल के सबसे सही तरीके बताए गए हैं.

ARIA, लैंडमार्क रोल भी ऑफ़र करता है. यह HTML5 में उपलब्ध विकल्पों को बढ़ाता है. ज़्यादा जानकारी के लिए, लैंडमार्क भूमिकाओं के डिज़ाइन पैटर्न की खास जानकारी देखें.