محتويات الدورة

JavaScript / متقدم: الجدولة والواجهات الموثوقة / الدرس 16

تفاعلات JavaScript الميسرة

احفظ الدلالات الأصلية عند تحديث الحالة. اربط التسميات ولوحة المفاتيح والتركيز والأخطاء والملاحظات الحية بمهام كاملة لا مجرد فحص آلي ناجح.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اختيار عناصر أصلية وأسماء مفيدة.
  • تنسيق التركيز والحالة عند التغير.
  • اختبار إكمال المهمة بلوحة المفاتيح والتقنيات المساعدة.

يبدأ السلوك بالعنصر المناسب

ينفذ الزر فعلاً ويتنقل الرابط إلى مورد. توفر العناصر الأصلية دلالات مهمة للوحة المفاتيح والإتاحة، وتضيف إعادة بنائها بـdiv التزامات. حسّن الأساس بدلاً من منع السلوك الافتراضي آلياً. أعطِ العنصر اسماً مرئياً مفيداً، واجعل أي تجاوز للاسم الميسر يشمل النص المرئي ليستدعيه مستخدم الصوت. تحتاج حالة التعطيل سبباً وطريق استعادة، ولا تجعل المعطل الموضع الوحيد لشرح الخطوة التالية.

إعلان التغيير دون سرقة التركيز

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

javascript للمتصفح فقط: فعل أصلي ورسالة حالة
const root = document.createElement("section");
const button = document.createElement("button");
button.type = "button"; button.textContent = "Enroll";
const status = document.createElement("p");
status.setAttribute("role", "status");
button.addEventListener("click", () => { status.textContent = "1 enrolled"; });
root.append(button, status);
button.click();
console.log(status.textContent);
console.log(button.tagName, status.getAttribute("role"));
الناتج المتوقع
1 enrolled
BUTTON status

يثبت الفحص حالة DOM فقط. ويحتاج التشغيل والتركيز والإعلان الفعلي تقييماً لمهمة مركبة.

يتبع التركيز دورة المهمة

يحتاج فتح الحوار وجهة تركيز مفهومة وعناصر قابلة للاستخدام وإغلاقاً مدعوماً وعودة مناسبة. فضّل dialog الأصلية إن ناسبت ثم افحص التفاعل كله؛ فلا ينفذ role السلوك. لا تنقل التركيز لكل حالة أو تعيد إنشاء العنصر المركز عليه بلا داعٍ. قد تترك إزالة العقدة المستخدم عالقاً؛ فاحفظ الهوية أو اختر الوجهة التالية بعد الحذف. اختبر الفتح والخطأ والتصحيح والإغلاق والإعادة كمهمة مترابطة.

ربط الخطأ بالحقل وحفظ العمل

يحدد التحقق الحقل ويشرح المشكلة نصياً ويتيح التصحيح دون حذف المدخلات الصحيحة الأخرى. تحدد aria-invalid الخطأ وتوفر إحالة وصفاً. لا يكفي اللون، ولا ينبغي أن يكرر التنبيه الخطأ نفسه مع كل ضغطة. يوضح المثال ارتباط DOM والصفات المحفوظة، ولا يستبدل قيود النموذج أو تحقق الخادم. يتبع وقت الإعلان المهمة لا قاعدة انتقاد كل حرف فوراً.

javascript للمتصفح فقط: ربط التسمية والخطأ
const field = document.createElement("input");
field.id = "email"; field.type = "email";
const label = document.createElement("label");
label.htmlFor = field.id; label.textContent = "Email";
const error = document.createElement("p");
error.id = "email-error"; error.textContent = "Enter a valid email address.";
field.setAttribute("aria-invalid", "true");
field.setAttribute("aria-describedby", error.id);
console.log(label.htmlFor, field.getAttribute("aria-invalid"));
console.log(field.getAttribute("aria-describedby"));
الناتج المتوقع
email true
email-error

للحقل هدف تسمية ومرجع وصف صريحان. ويجب أن يفحص النموذج المركب وجود العقد وسلوك التصحيح.

تقييم العمليات الكاملة وحدود الدليل

توفر WCAG معايير نجاح، ويضيف تقييم المهمة سياقاً لا تستنتجه الأداة. اجمع لوحة المفاتيح وقارئات مدعومة والتكبير والتدفق والتباين وفحوص البنية. افحص التحميل والفشل والفراغ لا البداية فقط. وثّق الصفحات والخطوات والتقنيات والعالق. لا يثبت مسح بلا خطأ المطابقة أو تلبية الجميع. أشرك ذوي الإعاقة حيث يمكن لتحسين المهمة دون اعتبار شخص ممثلاً لكل التجارب.

الأخطاء الشائعة وإصلاحها

تصرف div كزر ناقص

لماذا يحدث؟
استبدال دلالات لوحة المفاتيح بمعالج نقرة.
كيف تصلحه؟
استخدام زر أصلي بنوع وتسمية مقصودين.
كيف تتجنب تكراره؟
اختبار المهمة بلوحة المفاتيح فقط.

نقل التركيز مع كل تحديث

لماذا يحدث؟
الخلط بين الإعلان وإدارة التركيز.
كيف تصلحه؟
استخدام منطقة حالة ونقل التركيز لحاجة المهمة.
كيف تتجنب تكراره؟
مراجعة التركيز قبل التغير وبعده.

ادعاء إتاحة شاملة من فحص سليم

لماذا يحدث؟
الخلط بين قواعد البنية وقابلية المهمة الكاملة.
كيف تصلحه؟
إضافة فحوص يدوية وتقنيات مساعدة بنطاق صريح.
كيف تتجنب تكراره؟
الإبلاغ عن المعايير والطرق والحالات العالقة.

اختبر فهمك

1. يقول الزر Save بينما aria-label تساوي Action. ما المشكلة؟

اعرض الحل المشروح

يستبعد الاسم الميسر النص المرئي فيضعف الاستهداف بالصوت. استخدم المحتوى أو اسماً يشمل Save مثل Save draft. افحص الاسم المحسوب والسلوك لا الصفات وحدها.

2. ماذا يحفظ التسليم الفاشل وماذا يبلغ؟

اعرض الحل المشروح

احفظ الصحيح وحدد الحقول الخاطئة بنص مرتبط وطريق تصحيح منطقي. اختر التركيز حسب المهمة وأعلن الموجز عند الفائدة. أعد فحص التصحيح والتسليم الناجح لا اللون الأحمر فقط.

أهم ما تعلمته

  • تقلل العناصر الأصلية والتركيز المستقر تعقيد التفاعل.
  • تشمل أدلة الإتاحة إكمال المهام الديناميكية وحدوداً صريحة.

المراجع الرسمية