- توضيح الأدوار في ARIA: متى وكيف تستخدم ARIA في HTML

14 min read

توفر ARIA (Accessible Rich Internet Applications) للمطورين مجموعة أدوات قوية لجعل واجهات الويب الديناميكية والمعقدة متاحة لمستخدمي قارئات الشاشة — لكن سوء استخدامها منتشر ومكلف. يشرح هذا الدليل كل فئة رئيسية من أدوار ARIA، ويعرض القواعد الذهبية لاستخدام ARIA، ويقدم لك أمثلة برمجية ملموسة حتى تتمكن من تطبيقها بشكل صحيح.

إليك رقم يبعث على التأمل: وفقًا لتحليل WebAIM لأعلى مليون صفحة رئيسية لمواقع الويب، فإن الصفحات التي تتضمن سمات ARIA تحتوي في المتوسط على عدد أكبر بكثير من أخطاء إمكانية الوصول القابلة للكشف مقارنة بالصفحات التي لا تحتوي على ARIA على الإطلاق. هذا ليس حجة ضد استخدام ARIA — بل هو حجة لاستخدامها بشكل صحيح. تعد ARIA واحدة من أقوى الأدوات في مجموعة أدوات إمكانية الوصول الحديثة، لكنها أيضًا واحدة من أكثر الأدوات التي يُساء فهمها. إذا استخدمتها بشكل صحيح فإنك تفتح موقعك بشكل ملموس أمام ملايين المستخدمين من ذوي الإعاقة. وإذا استخدمتها بشكل خاطئ فإنك تجعل تجربتهم أسوأ فعليًا.

ما هي ARIA ولماذا وُجدت؟

ARIA هي اختصار لـ Accessible Rich Internet Applications. إنها مجموعة من سمات HTML، تُعرّفها مبادرة W3C لإمكانية الوصول على الويب، وتسمح للمطورين بالتواصل بالمعلومات الدلالية إلى تقنيات المساعدة مثل قارئات الشاشة، وشاشات برايل، وبرامج التحكم الصوتي. عندما يعرض المتصفح صفحة ما، فإنه يبني بنيتين متوازيتين: DOM (ما تراه) و"شجرة إمكانية الوصول" (ما تقرأه تقنيات المساعدة). تتيح لك سمات ARIA تعديل شجرة إمكانية الوصول هذه لوصف ما هي المكونات المخصصة وكيف تتصرف بدقة.

نشأت الحاجة إلى ARIA من مشكلة حقيقية. فقد صُمم HTML للوثائق، وليس للتطبيقات. عندما تطور الويب إلى منصة لتجارب غنية وتفاعلية — واجهات بعلامات تبويب، حوارات نمط modal، سحب وإفلات، تغذيات بيانات حية — لم تستطع العناصر الأصلية في HTML أن تنقل إلى قارئ الشاشة ما هي هذه المكونات أو كيف تعمل. تقوم ARIA بسد هذه الفجوة. كما تقول MDN، فإن ARIA "تكمل HTML بحيث يمكن تمرير التفاعلات والودجات الشائعة الاستخدام في التطبيقات إلى تقنيات المساعدة عندما لا يكون هناك آلية أخرى."

لا تغيّر ARIA العرض المرئي. ولا تضيف سلوكًا. ولا توفر دعم لوحة المفاتيح تلقائيًا. إنها تعدّل فقط ما تكشفه شجرة إمكانية الوصول لتقنيات المساعدة. هذا تمييز مهم — وهو أحد الأسباب وراء العديد من الأخطاء التي يرتكبها المطورون عندما يلجؤون إلى ARIA كاختصار.

تُدار المواصفة من قبل W3C تحت اسم WAI-ARIA، وهي حاليًا في الإصدار 1.2، مع تطوير نشط للإصدار 1.3. وهي توفر منظومة من الأدوار والحالات والخصائص التي تصف معًا عناصر واجهة المستخدم القابلة للوصول عبر النطاق الكامل لأنماط الويب الحديثة.

الأعمدة الثلاثة: الأدوار، الحالات، والخصائص

قبل كتابة سطر واحد من ARIA، تحتاج إلى فهم اللبنات الثلاث المميزة التي توفرها المواصفة. فهي ليست قابلة للاستبدال، وخلطها معًا يعد أحد أكثر مصادر الأخطاء شيوعًا.

الأدوار (Roles) تعرّف ما هو العنصر. يجيب الدور عن السؤال: ما نوع الشيء الذي أنظر إليه؟ تشمل الأمثلة button وdialog وnavigation وtablist وprogressbar. تطبق دورًا باستخدام السمة role: <div role='button'>. ينقل الدور غرض العنصر إلى تقنية المساعدة حتى يعرف المستخدم كيفية التفاعل معه.

الحالات (States) تصف الحالة الديناميكية لعنصر ما — أي شيء يتغير مع تفاعل المستخدم مع الصفحة. تخبر السمة aria-expanded قارئ الشاشة ما إذا كان القسم القابل للطي مفتوحًا أم مغلقًا. تعكس aria-checked ما إذا كان مربع اختيار مخصص محددًا. يجب إبقاء الحالات متزامنة مع JavaScript؛ فـ aria-expanded='false' ثابتة لا تتغير ليست عديمة الفائدة فحسب، بل مضللة فعليًا.

الخصائص (Properties) توفر معلومات وصفية، عادة أكثر استقرارًا، عن عنصر ما. تمنح aria-label العنصر اسمًا قابلًا للوصول يتجاوز نصه المرئي. تشير aria-labelledby إلى عنصر آخر يخدم نصه كتصنيف. تربط aria-describedby بنص وصفي إضافي. تشير aria-required إلى أن حقل نموذج يجب تعبئته. بينما يُتوقع أن تتغير الحالات كثيرًا، تميل الخصائص إلى أن تُضبط مرة واحدة وتُترك كما هي — رغم وجود استثناءات.

الأدوار تعرّف ما هو العنصر. الحالات تعرّف كيف يتصرف الآن. الخصائص توفر سياقًا وصفيًا إضافيًا. تحتاج إلى عمل الثلاثة معًا لإنتاج مكوّن مخصص قابل للوصول بالكامل.

القاعدة الذهبية — ولماذا هي أهم مما تظن

القاعدة الأولى لـ W3C في استخدام ARIA واضحة لا لبس فيها: إذا كان بإمكانك استخدام عنصر HTML أصلي أو سمة أصلية مع الدلالات والسلوك الذي تحتاجه مدمجًا مسبقًا، فاستخدمه. لا تلجأ إلى ARIA أولًا. يُطلق على هذا أحيانًا مبدأ "عدم استخدام ARIA أفضل من استخدام ARIA بشكل سيئ" — وهي عبارة تعكس الخطر الحقيقي لاستخدام ARIA بحسن نية ولكن بشكل غير صحيح.

تحمل عناصر HTML الأصلية دلالات ARIA ضمنية مجانًا. فالعنصر <button> يُكشف بالفعل في شجرة إمكانية الوصول كزر. وهو بالفعل قابل للتركيز بلوحة المفاتيح. ويستجيب بالفعل لكل من مفتاح Enter وSpace. ويعلن بالفعل عن تصنيفه. في اللحظة التي تكتب فيها <div role='button'>، تكون قد تحملت مسؤولية إعادة إنشاء كل هذا السلوك يدويًا — معالجة لوحة المفاتيح، إدارة التركيز، تحديث الحالات — في JavaScript. هذا ليس قلقًا نظريًا. نسيان دعم لوحة المفاتيح في زر مخصص يعد أحد أكثر أخطاء ARIA شيوعًا وأشدها ضررًا في بيئات الإنتاج.

الحالات التي تكون فيها ARIA ضرورية حقًا تميل إلى التجمع حول بعض السيناريوهات: عندما تبني ودجت معقدة لا يوجد لها مكافئ في HTML (مثل carousel، أو combobox مع إكمال تلقائي، أو tree view)؛ عندما تعالج شيفرة قديمة يكون فيها إعادة هيكلة DOM مكلفة للغاية؛ عندما تبني مكوّن ويب يحتاج إلى كشف دلالات مخصصة؛ أو عندما يكون دعم المتصفح وتقنيات المساعدة لعنصر أصلي غير متسق بما يكفي بحيث يعمل مكافئ ARIA بشكل أكثر موثوقية في الممارسة.

خارج هذه السيناريوهات، يجب أن يكون حدسك الأول دائمًا هو HTML الدلالي. استخدم <nav> بدلًا من <div role='navigation'>. استخدم <main> بدلًا من <div role='main'>. استخدم <button> بدلًا من <div role='button'>. العناصر الأصلية أكثر متانة، وأفضل دعمًا، وتتطلب صيانة أقل بكثير.

جولة في الفئات الرئيسية لأدوار ARIA

تنظم مواصفة WAI-ARIA الأدوار في عدة فئات. يساعدك فهم هذه الفئات على معرفة أي دور تستخدم ومتى.

أدوار المعالم (Landmark Roles)

تحدد أدوار المعالم المناطق الرئيسية في الصفحة، مما يسمح لمستخدمي قارئات الشاشة بالقفز مباشرة إلى الأقسام الأساسية باستخدام اختصارات لوحة المفاتيح. أكثر أدوار المعالم استخدامًا هي banner وnavigation وmain وcomplementary وcontentinfo وsearch وform. لكل واحد من هذه مكافئ HTML أصلي مباشر: <header> و<nav> و<main> و<aside> و<footer> وهكذا. في الممارسة، يعني هذا أن أدوار المعالم غالبًا ما تكون زائدة عن الحاجة إذا كنت تستخدم HTML دلاليًا حديثًا. أضفها فقط عندما تكون عالقًا مع ترميز غير دلالي لأسباب بنيوية.

<!-- Prefer this -->
<header>
  <nav>...</nav>
</header>
<main>...</main>
<footer>...</footer>

<!-- Use ARIA only when you must use divs -->
<div role='banner'>
  <div role='navigation'>...</div>
</div>
<div role='main'>...</div>
<div role='contentinfo'>...</div>

أدوار الودجات (Widget Roles)

تصف أدوار الودجات المكونات التفاعلية التي يتعامل معها المستخدم مباشرة. هنا تؤدي ARIA أهم أعمالها، لأن العديد من أنماط الودجات لا تملك مكافئًا أصليًا في HTML. تشمل أدوار الودجات الشائعة button وcheckbox وdialog وmenu وmenuitem وslider وtablist وtab وtabpanel وtooltip وtree وcombobox.

عندما تستخدم دور ودجت، فإنك تتحمل المسؤولية الكاملة عن تفاعل لوحة المفاتيح. يحدد دليل ممارسات التأليف لـ WAI-ARIA (APG) أنماط لوحة المفاتيح المتوقعة لكل نوع ودجت — على سبيل المثال، مفاتيح الأسهم للتنقل بين علامات التبويب، ومفتاح Escape لإغلاق الحوار، وHome وEnd للقفز إلى أول وآخر عنصر في listbox. الفشل في تنفيذ هذه الأنماط يعني أن مكوّنك مُسمى تقنيًا لكنه غير قابل للاستخدام وظيفيًا لمستخدمي لوحة المفاتيح فقط.

<!-- A custom tab interface -->
<div role='tablist' aria-label='Account settings'>
  <button role='tab' aria-selected='true' aria-controls='panel-profile' id='tab-profile'>
    Profile
  </button>
  <button role='tab' aria-selected='false' aria-controls='panel-security' id='tab-security' tabindex='-1'>
    Security
  </button>
</div>
<div role='tabpanel' id='panel-profile' aria-labelledby='tab-profile'>
  <p>Profile settings content</p>
</div>
<div role='tabpanel' id='panel-security' aria-labelledby='tab-security' hidden>
  <p>Security settings content</p>
</div>

أدوار المناطق الحية (Live Region Roles)

تعد المناطق الحية واحدة من أكثر ميزات ARIA فائدة حقيقية. فهي تسمح لتقنيات المساعدة بالإعلان عن تحديثات المحتوى الديناميكي — مثل رسائل الحالة، وإشعارات الأخطاء، ورسائل الدردشة، ومؤشرات التحميل — للمستخدمين الذين لا يمكنهم رؤية تغيّر الشاشة. بدون المناطق الحية، قد لا يعرف مستخدم قارئ الشاشة الذي يرسل نموذجًا ما إذا كان قد نجح أو فشل إلا إذا نُقل التركيز صراحةً إلى النتيجة.

أدوار المناطق الحية الأساسية هي alert وstatus وlog وmarquee وtimer. يحمل دور alert ضمنيًا الإعداد aria-live='assertive'، ما يعني أنه يقاطع المستخدم فورًا — وهو مناسب للأخطاء أو التحذيرات العاجلة. يستخدم دور status aria-live='polite'، فينتظر حتى ينهي المستخدم مهمته الحالية قبل الإعلان — وهو مثالي لرسائل النجاح ومؤشرات التقدم.

<!-- Polite status message for non-urgent feedback -->
<div role='status' aria-live='polite' aria-atomic='true'>
  <!-- Dynamically inject text here with JavaScript -->
</div>

<!-- Assertive alert for errors that demand immediate attention -->
<div role='alert'>
  Please correct the errors below before submitting.
</div>

المفتاح في المناطق الحية هو أن الحاوية يجب أن تكون موجودة في DOM قبل حقن المحتوى الديناميكي. غالبًا ما تفوت قارئات الشاشة منطقة حية تُنشأ وتُملأ في الوقت نفسه. أنشئ الحاوية عند تحميل الصفحة واملأها باستخدام JavaScript مع حدوث الأحداث.

أدوار بنية المستند (Document Structure Roles)

تصف أدوار بنية المستند — مثل article وlist وlistitem وtable وrow وcell وfigure وheading — التنظيم البنيوي للمحتوى. معظم هذه الأدوار أصبحت الآن مستبدلة بعناصر HTML الأصلية، وتشير MDN إلى أن غالبية أدوار بنية المستند "لا ينبغي استخدامها بعد الآن لأن المتصفحات تدعم الآن عناصر HTML دلالية بالمعنى نفسه." الاستثناء الرئيسي هو عندما تعمل مع بيئات عرض مخصصة، أو مكونات ويب، أو محتوى قائم على SVG حيث لا تتوفر عناصر HTML الأصلية.

خصائص ARIA الأساسية التي يجب أن يعرفها كل مطور

إلى جانب الأدوار، تظهر عدة خصائص ARIA باستمرار في أعمال إمكانية الوصول في العالم الحقيقي. هذه هي الخصائص التي ستلجأ إليها غالبًا:

  • aria-label: توفر اسمًا قابلًا للوصول لعنصر ما عندما لا يتوفر تصنيف نصي مرئي أو عندما يكون النص المرئي غير كافٍ. حالات الاستخدام الشائعة: الأزرار التي تحتوي على أيقونة فقط، وحقول البحث بدون تصنيف مرئي، وأزرار الإغلاق في النوافذ المنبثقة. لاحظ أن aria-label تتجاوز أي نص مرئي أو تصنيف أصلي، لذا استخدمها بحذر على العناصر التي تحتوي على نص مرئي.
  • aria-labelledby: تشير إلى عنصر أو أكثر يخدم محتواه النصي كاسم قابل للوصول. وهي أكثر قوة من aria-label في الحالات المعقدة لأن نص التصنيف يبقى متزامنًا مع المحتوى المرئي. تقبل قائمة مفصولة بمسافات من معرّفات العناصر، وتقوم تقنيات المساعدة بدمج النص المشار إليه بالترتيب.
  • aria-describedby: تربط بنص وصفي إضافي — ليس اسمًا، بل سياقًا إضافيًا. استخدمها لربط حقول النماذج برسائل الخطأ الخاصة بها، أو لربط تلميح أداة (tooltip) بالعنصر الذي يصفه. عادةً ما تعلن قارئات الشاشة هذا بعد اسم العنصر ودوره.
  • aria-hidden: تزيل عنصرًا بالكامل من شجرة إمكانية الوصول. لا تقدر بثمن للأيقونات الزخرفية، والمحتوى المكرر، والعناصر المرئية فقط التي قد تخلق ضوضاء لمستخدمي قارئات الشاشة. لا تطبق أبدًا aria-hidden='true' على عنصر قابل للتركيز — إذ يمكن للمستخدم أن ينتقل إليه باستخدام Tab، لكنه لن يتلقى أي معلومات عنه.
  • aria-expanded: تنقل ما إذا كان عنصر قابل للطي — مثل قائمة منسدلة، أو accordion، أو ودجت كشف — مفتوحًا حاليًا أم مغلقًا. يجب تبديلها ديناميكيًا باستخدام JavaScript؛ فالقيمة الثابتة أسوأ من حذف السمة تمامًا.
  • aria-current: تشير إلى العنصر الحالي ضمن مجموعة، وتُستخدم غالبًا في التنقل لتحديد رابط الصفحة النشطة (aria-current='page') أو الخطوة الحالية في عملية متعددة الخطوات.

أخطاء ARIA الشائعة التي تضر بإمكانية الوصول فعليًا

نظرًا لأن الصفحات التي تحتوي على ARIA تميل إلى إظهار المزيد من أخطاء إمكانية الوصول مقارنة بتلك التي لا تحتوي عليها، فمن المفيد أن نكون صريحين بشأن ما يحدث بشكل خاطئ غالبًا. هذه ليست حالات حافة — بل أنماط تظهر في شيفرة الإنتاج كل يوم.

استخدام أدوار ARIA على عناصر ذات دلالات أصلية قوية. بعض عناصر HTML لها ما تسميه المواصفة "دلالات أصلية قوية" — معانٍ مدمجة بعمق في المتصفح ولا يمكن تجاوزها بأمان. يمكن أن يؤدي وضع دور غير مناسب على <button> أو <input> إلى تجاهل المتصفح لدور ARIA تمامًا، أو إنتاج سلوك متناقض يربك تقنيات المساعدة. يجب أن يكون الدور الذي تعلنه مناسبًا للعنصر الذي تضعه عليه.

نسيان دعم لوحة المفاتيح مع أدوار الودجات. إن role='button' في ARIA يخبر قارئ الشاشة أن العنصر زر. لكنه لا يجعل العنصر قابلًا للتشغيل بلوحة المفاتيح. إذا استخدمت <div> مع role='button'، يجب أن تضيف tabindex='0' لجعله قابلًا للتركيز، ويجب أن تضيف مستمعي أحداث لكل من مفتاح Enter وSpace. إن فقدان أي جزء من هذا يفسد التجربة لمستخدمي لوحة المفاتيح فقط.

<!-- Incomplete and inaccessible -->
<div role='button' onclick='doSomething()'>Submit</div>

<!-- Correct custom button implementation -->
<div
  role='button'
  tabindex='0'
  onclick='doSomething()'
  onkeydown='if(event.key==="Enter"||event.key===" ")doSomething()'
>Submit</div>

<!-- Or, the right answer: just use a button -->
<button onclick='doSomething()'>Submit</button>

استخدام aria-hidden على عناصر قابلة للتركيز. يؤدي تطبيق aria-hidden='true' على عنصر قابل للتركيز إلى إخفائه عن شجرة إمكانية الوصول ولكن ليس عن التنقل بلوحة المفاتيح. يمكن لمستخدم لوحة المفاتيح أن ينتقل إليه باستخدام Tab، لكنه لن يتلقى أي معلومات عنه، ولن يكون لديه طريقة لمعرفة ما يفعله. يعد هذا فشلًا في WCAG 2.1 بموجب معيار النجاح 4.1.2 (الاسم، الدور، القيمة).

حالات ARIA الراكدة. يؤدي الفشل في تحديث aria-expanded وaria-checked وaria-selected والحالات المماثلة عندما يتغير واجهة المستخدم إلى ترك مستخدمي قارئات الشاشة مع صورة غير صحيحة جوهريًا عن الواجهة. فالقائمة التي تُفتح بصريًا لكن مشغلها لا يزال يقرأ aria-expanded='false' تعد مضللة فعليًا.

الأدوار الزائدة عن الحاجة. لا يفعل إضافة role='navigation' إلى عنصر <nav>، أو role='button' إلى عنصر <button> أي شيء مفيد. إنه يكدس الشيفرة ويمكن أن يربك أحيانًا بعض مجموعات تقنيات المساعدة. ثق بالدلالات الأصلية.

ARIA وWCAG: فهم العلاقة

ARIA ليست WCAG. إنهما مواصفتان منفصلتان تعملان معًا. تحدد WCAG (إرشادات محتوى الويب القابل للوصول) ما يجب تحقيقه — النتائج المطلوبة للمحتوى القابل للوصول. تعد ARIA جزءًا من كيفية تحقيق ذلك — آلية تقنية لتحقيق بعض تلك النتائج. معيار النجاح الأكثر صلة في WCAG بالنسبة لـ ARIA هو 4.1.2: الاسم، الدور، القيمة، الذي يتطلب أن تحتوي جميع مكونات واجهة المستخدم على اسم، وتكشف عن دورها لتقنيات المساعدة، وتنقل حالتها وخصائصها برمجيًا. تعد ARIA واحدة من الأدوات الأساسية للوفاء بهذا المعيار للمكونات المخصصة.

تدعم ARIA أيضًا عدة معايير نجاح أخرى. تساهم أدوار المعالم في 2.4.1 (تجاوز الكتل) من خلال تمكين تخطي التنقل. غالبًا ما تكون المناطق الحية الأداة المناسبة للوفاء بالمعيار 4.1.3 (رسائل الحالة) في WCAG 2.1، الذي يتطلب أن تكون رسائل الحالة قابلة للتحديد برمجيًا دون تلقي التركيز. يساعد الاستخدام الصحيح لـ aria-label وaria-labelledby في الوفاء بالمعيارين 2.4.6 (العناوين والتصنيفات) و1.3.1 (المعلومات والعلاقات).

يجدر بالذكر أن الامتثال لـ WCAG أصبح بشكل متزايد مطلبًا قانونيًا. دخل قانون إمكانية الوصول الأوروبي (European Accessibility Act) حيز التنفيذ الكامل في June 2025، موسعًا متطلبات إمكانية الوصول الإلزامية لمجموعة واسعة من الخدمات الرقمية في القطاع الخاص عبر دول الاتحاد الأوروبي. في الولايات المتحدة، يستمر تفسير ADA ليشمل إمكانية الوصول إلى الويب، وتُطبق المتطلبات الفيدرالية بموجب القسم 508 على المنظمات الحكومية وتلك الممولة اتحاديًا. إن فهم ARIA بشكل صحيح ليس مجرد أفضل ممارسة — بل أصبح بشكل متزايد جزءًا من التزاماتك المتعلقة بالامتثال.

اختبار تنفيذ ARIA الخاص بك

الطريقة الوحيدة لمعرفة ما إذا كان تنفيذ ARIA الخاص بك يعمل فعليًا هي اختباره باستخدام تقنيات مساعدة حقيقية. يمكن للأدوات الآلية مثل axe وWAVE وLighthouse اكتشاف الانتهاكات البنيوية — خاصية مطلوبة مفقودة، دور غير صالح، aria-hidden مطبقة على عنصر قابل للتركيز — لكنها لا تستطيع إخبارك ما إذا كان قارئ الشاشة يعلن عن نافذتك المنبثقة بطريقة منطقية، أو ما إذا كان التنقل بلوحة المفاتيح عبر ودجت الشجرة المخصص الخاص بك يتبع الأنماط المتوقعة.

للاختبار اليدوي، تعد قارئات الشاشة الرئيسية التي يجب تغطيتها هي JAWS وNVDA على Windows (معًا تمثلان الغالبية العظمى من استخدام قارئات الشاشة على سطح المكتب)، وVoiceOver على macOS وiOS. يغطي TalkBack نظام Android. يمكن أن يتصرف كل مزيج من قارئ شاشة ومتصفح بشكل مختلف، لذا يُوصى بشدة بالاختبار عبر مزيجين على الأقل. اختبر كل حالة تفاعلية: افتح الحوار، وسّع الـ accordion، اختر الخيار، فعّل التنبيه. تأكد من أن الإعلان يطابق ما سيفهمه المستخدم المبصر من النظر إلى الواجهة نفسها.

عند اختبار الودجات المخصصة، اعمل من خلال نموذج تفاعل لوحة المفاتيح المحدد في دليل ممارسات التأليف لـ WAI-ARIA لنوع الودجت ذلك. إذا لم يستجب tablist لمفاتيح الأسهم، أو لم يقم الحوار بحجز التركيز، فهذه إخفاقات بغض النظر عن مدى صحة ترميز ARIA في تدقيق آلي.

أهم النقاط

  • فضّل دائمًا HTML الدلالي على ARIA. تحمل العناصر الأصلية مثل <button> و<nav> و<main> و<dialog> دلالات إمكانية الوصول المدمجة التي تكون أكثر متانة وتتطلب شيفرة أقل بكثير من مكافئاتها باستخدام ARIA على div. الجأ إلى ARIA فقط عندما يقصر HTML الأصلي حقًا.
  • أدوار ARIA هي التزام، وليست اختصارًا. إن تطبيق role='button' أو role='dialog' على عنصر مخصص يلزمك بتنفيذ نموذج التفاعل الكامل بلوحة المفاتيح لنوع الودجت ذلك. الأدوار بدون سلوك مطابق تخلق ارتباكًا وإخفاقات في WCAG.
  • حافظ على حالات ARIA متزامنة مع واجهة المستخدم. يجب تحديث السمات الديناميكية مثل aria-expanded وaria-checked وaria-selected ومحتوى aria-live في JavaScript مع تغيّر واجهة المستخدم. الحالة الراكدة ضارة فعليًا — فهي تنقل معلومات خاطئة للمستخدم.
  • استخدم المناطق الحية لتحديثات المحتوى الديناميكي. أي محتوى يتحدث دون إعادة تحميل الصفحة — الإشعارات، رسائل الخطأ، حالات التحميل، تغذيات الدردشة — يحتاج إلى منطقة aria-live أو دور مناسب مثل alert أو status حتى يتلقى مستخدمو قارئات الشاشة المعلومات نفسها التي يراها المستخدمون المبصرون تلقائيًا.
  • اختبر باستخدام تقنيات مساعدة حقيقية، وليس الأدوات الآلية فقط. تلتقط الماسحات الآلية أخطاء ARIA البنيوية لكنها لا تستطيع التحقق مما إذا كان تنفيذك ينتج تجربة متماسكة وقابلة للاستخدام. الاختبار اليدوي باستخدام JAWS وNVDA وVoiceOver هو الطريقة الوحيدة لسد هذه الفجوة.