इंटरऑप 2024: सुलभता फ़ोकस एरिया के लिए, Chrome 100% पर काम करेगा

Jocelyn Tran
Jocelyn Tran

Chrome ने इस साल की शुरुआत, Interop 2024 के सुलभता फ़ोकस एरिया में 88.2% टेस्ट पास करके की. जून 2024 में, हमने सबसे पहले सभी टेस्ट पास करने का रिकॉर्ड बनाया. इस पोस्ट में, इस लक्ष्य तक पहुंचने के लिए किए गए काम के बारे में बताया गया है.

Interop 2024 के हर फ़ोकस एरिया की तरह, सुलभता से जुड़े एरिया को चुनिंदा सुविधाओं के लिए, वेब प्लैटफ़ॉर्म टेस्ट के सेट से तय किया जाता है. Interop 2024 में मौजूद टेस्ट का मकसद यह पक्का करना है कि सभी ब्राउज़र, ऐक्सेस किए जा सकने वाले नाम और कैलकुलेट की गई भूमिकाओं को एक ही तरह से बनाएं.

ऐक्सेस किए जा सकने वाले नामों से, एचटीएमएल एलिमेंट का मकसद या इंटेंट पता चलता है. इससे उपयोगकर्ताओं को यह समझने में मदद मिलती है कि एलिमेंट का क्या काम है और वे उससे कैसे इंटरैक्ट कर सकते हैं. accname स्पेसिफ़िकेशन से यह तय होता है कि ब्राउज़र, किसी एलिमेंट के लिए सुलभ नाम वाली स्ट्रिंग कैसे बनाते हैं. ARIA स्पेसिफ़िकेशन में, इस नाम का हिसाब लगाने का तरीका बताया गया है.

किसी एलिमेंट की कैलकुलेट की गई भूमिका एक स्ट्रिंग होती है. यह स्ट्रिंग, ब्राउज़र इंजन के हिसाब से एलिमेंट की भूमिका दिखाती है. इसका इस्तेमाल मुख्य तौर पर डेवलपर टूल में किया जाता है. उदाहरण के लिए, WebDriver फ़ंक्शन getComputedRole में, इंटरऑपरेबिलिटी टेस्टिंग की सुविधा चालू करने के लिए.

Chrome की टीम को क्या करना पड़ा?

हमें दो बड़े काम पूरे करने थे—भूमिकाओं की मैपिंग को सामान्य भूमिकाओं में बदलना और काम न करने वाली भूमिकाओं को हटाना. इसके अलावा, कुछ और छोटी गड़बड़ियां ठीक की गई हैं और कुछ सुविधाएं लागू की गई हैं. Chrome की टीम ने नीचे दिए गए काम पूरे किए हैं. इसके अलावा, हमने Microsoft के साथ मिलकर उन समस्याओं को ठीक करने पर भी काम किया है जिन्हें वे सुलझाने के लिए, क्रोमियम में बदलाव कर रहे थे. ये समस्याएं, सुलभता से जुड़े फ़ोकस एरिया से जुड़ी थीं.

कुछ भूमिकाओं की मैपिंग को सामान्य भूमिका में बदलना

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

  • <header>, <main> या सेक्शनिंग कॉन्टेंट एलिमेंट (<article>, <aside>, <nav> या <section>) के दायरे में हो.
  • <footer>, <main> या कॉन्टेंट एलिमेंट (<article>, <aside>, <nav> या <section>) को सेक्शन में बांटने वाला एलिमेंट.
  • सेक्शनिंग कॉन्टेंट एलिमेंट (<article>, <aside>, <nav> या <section>) में मौजूद ऐसा <aside> जिसका नाम ऐक्सेस नहीं किया जा सकता.
  • ऐसा <section> जिसका नाम ऐक्सेस नहीं किया जा सकता.
  • ऐसे सूची आइटम जो किसी भी फ़्रेम में मौजूद नहीं हैं (<li>).

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

अब इस्तेमाल में न होने वाली भूमिका हटाना

हमने directory भूमिका को बंद कर दिया है और इसे सूची की भूमिका से मैप कर दिया है. ARIA 1.2 में directory भूमिका का इस्तेमाल नहीं किया जा सकता. स्पेसिफ़िकेशन में बताया गया है कि यह list भूमिका के बराबर है और डेवलपर को list का इस्तेमाल करना चाहिए. directory का इस्तेमाल करने वाले पुराने कॉन्टेंट के सेमेटिक्स को बनाए रखने के लिए, इसे अब Chrome में list पर मैप किया गया है.

अन्य समस्याएं हल करना

हमने gridcell भूमिका के लिए सहायता जोड़ी है. इस नई भूमिका से, gridcell और cell के बीच का अंतर ज़्यादा साफ़ तौर पर दिखता है. gridcell को फ़ोकस किया जा सकता है, उसमें बदलाव किया जा सकता है, और उसे चुना जा सकता है. हालांकि, cell में ऐसा नहीं किया जा सकता.

हमने फ़ॉलबैक भूमिका की गिनती जोड़ी है. पहले, हम फ़ॉलबैक भूमिकाओं की जांच नहीं करते थे. इसलिए, अगर पहली भूमिका मान्य नहीं थी, तो हम किसी दूसरी भूमिका का इस्तेमाल करते थे. हालांकि, स्पेसिफ़िकेशन में इस बारे में जानकारी नहीं दी गई है.

कुछ भूमिकाएं सिर्फ़ सही संदर्भ में मान्य होती हैं. हमने भूमिकाओं के गलत इस्तेमाल की जांच करने के लिए, यह तरीका जोड़ा है:

  • row भूमिका, table, grid, rowgroup या treegrid में होनी चाहिए.
  • rowgroup भूमिका, table, grid, tree या treegrid में होनी चाहिए.
  • listitem भूमिका, list में होनी चाहिए.

अगर भूमिका अमान्य है, तो Chrome अब किसी अन्य भूमिका का हिसाब लगाने के लिए, एचटीएमएल एलिमेंट जैसी अन्य जानकारी का इस्तेमाल करता है.

हमने thead और tfooter को, सुलभता ट्री में शामिल के तौर पर मार्क किया है. पहले इन्हें 'अनदेखा किया गया' के तौर पर मार्क किया जाता था. हालांकि, इन्हें अब भी ट्री में शामिल किया जाता था. अब टेबल हेडर और टेबल फ़ुटर को, सहायक टेक्नोलॉजी की मदद से पार्स किया जा सकता है.


हो सकता है कि ज़्यादातर डेवलपर को ये बदलाव न दिखें. हालांकि, सभी ब्राउज़र यह पक्का करने की कोशिश करते हैं कि ये चीज़ें एक ही तरह से काम करें. हम यह भी पक्का करते हैं कि अलग-अलग भूमिकाएं हर जगह एक ही तरह से दिखें.