نيكيلاو » أرشيف المدونة » تحديد أنواع الروابط
» أرشيف المدونة » تحديد أنواع الروابط Niquelao تحديد أنواع الروابط 3 سبتمبر 2006، بقلم Rumoroso من الممارسات الجيدة التي تؤثر إيجاباً على إمكانية الوصول وقابلية الاستخدام لصفحاتنا هي تحديد نوع الروابط الموجودة في موقعنا بناءً على وجهتها. ولتحقيق ذلك، بالإضافة إلى الإجراءات المناسبة المتعلقة بمسائل إمكانية الوصول، يمكننا إنشاء اختلافات في الأنماط عبر CSS (مع الحرص دائماً على الحفاظ على الاتساق الذي يسمح بتعريف الروابط على هذا النحو). من خلال هذه الممارسة، سيتمكن المستخدمون الذين يستخدمون المتصفحات الرسومية من التعرف على ما إذا كانت الوثيقة التي سينتقلون إليها هي، على سبيل المثال، ملف PDF أو ما إذا كانت الوجهة خارج بوابتنا. المشاكل سيتعين علينا تحديد كل نوع من الروابط عبر فئة تسمح بتطبيق النمط عليه. في كثير من الأحيان يكون الأشخاص الذين يضيفون الروابط هم مسؤولو المحتوى وليس لديهم صلاحية الوصول لتعديل الكود. الحل من خلال دالة بسيطة مكتوبة بلغة JavaScript، ومُضافة بطريقة غير تدخلية، سنتمكن من تحديد نوع الوثيقة بناءً على محتوى السمة “title” (إن وُجدت) و/أو امتداد الملف الوجهة. للملاحظة: من الممارسات الجيدة أن يتبنى المحررون/مسؤولو المحتوى البروتوكول المشترك لتحديد نوع وجهة الرابط في السمة “title” الخاصة به، لأن معظم أدوات التحرير تسمح بإدخالها. بالإضافة إلى ذلك، تمت إضافة وظيفة إلى السكريبت تتضمن إدراج نص في السمة “title” للروابط التي لا تحتوي عليها والتي تشير إلى وثيقة يمكن التعرف عليها بواسطة السكريبت نفسه. روابط أمثلة Google وثيقة بصيغة PDF هذا الرابط لا يحتوي على السمة “title” وستُضاف إليه بواسطة الدالة: ملف Word السكريبت السكريبت مُفصَّل أدناه ويمكنك تنزيله مباشرة أولاً، نُعلن عن مصفوفة تحتوي على جزء النص الذي سيُدخله المحرر/مسؤول المحتوى والذي يصف نوع وجهة الرابط: var tFormat = [“enlace externo”, “formato pdf”, “formato word”]; نُعلن عن تصنيف لأنواع الروابط (مُعلن بنفس الترتيب السابق): var Format = [“externo”, “pdf”, “doc”]; نُعلن عن الفئات لتنسيق كل نوع من الروابط (مُعلنة بنفس الترتيب السابق). سيكون لها النمط المقابل في CSS: var classFormat = [“externo”, “pdf”, “doc”]; function enlaces() { // نختار جميع الروابط في الوثيقة var links = document.getElementsByTagName(“a”); for (var i = 0; i < links.length; i++) { // نتحقق من أنها ليست مراسي if(links[i].href.indexOf(”.”) > -1) { // نتحقق مما إذا كانت تحتوي على السمة “title” if(links[i].getAttribute(“title”)) { // نحصل على السمة “title” بأحرف صغيرة var title = links[i].getAttribute(“title”).toLowerCase(); // نقوم بحلقة تتحقق مما إذا كان في “title” // يوجد أحد النصوص المحددة في المصفوفة // tFormat. إذا وجدها، يضيف الفئة // المُعلنة في نفس الموضع الذي يوجد فيه النص // في المصفوفة classFormat for(var f = 0; f < tFormat.length; f++) if(title.indexOf(tFormat[f]) > -1) links[i].className += ” ” + classFormat[f]; } // بما أن ليس كل الروابط تحتوي دائماً على السمة “title” // سنتحقق، للاحتياط، من السمة “href” بالحصول // على امتداد الوثيقة الوجهة ومقارنته // بتلك المُعلنة في المصفوفة Format. var ini = links[i].href.length-4; var fin = links[i].href.length; var wFormat = links[i].href.substring(ini,fin).toLowerCase(); for(var f = 0; f < Format.length; f++) if(wFormat.indexOf(Format[f]) > -1) { links[i].className += ” ” + classFormat[f]; // إذا لم تكن تحتوي على السمة “title” تُضاف إليها if(!links[i].getAttribute(“title”)) links[i].setAttribute(“title”, tFormat[f]) } } } } أخيراً نُحمّل السكريبت: window.onload = enlaces; تحديد أنواع الروابط الفئة: CSS, Javascript —> تعليقان Jorge del Casar 14 مايو 2007 كنت أقرأ موقعك منذ فترة وقد أعجبني كثيراً. لديك أشياء مثيرة جداً للاهتمام، تهانينا. بما أنني رأيت أنك تبذل جهداً كبيراً حتى يصبح كل شيء مثالياً، أردت أن أقدم لك مساهمة. لم تأخذ في الحسبان أنه إذا كان الرابط مُعلَّماً بالفئة المقابلة عند تنفيذ السكريبت، فإن الفئة تتكرر. لا يترتب على ذلك مشاكل كبيرة، لكن يمكن التحقق مما إذا كانت تحتوي على فئة من المصفوفة Format في البداية، وفي حالة الإيجاب الانتقال إلى العنصر التالي، وفي حالة السلب متابعة السكريبت. يبدو أن هذا الخطأ قد حدث في الرابط المثال “وثيقة بصيغة PDF”. تهانينا مجدداً على عملك الجيد. آمل أن أرى المزيد هنا قريباً. ملاحظة: راجع التحقق من البريد الإلكتروني، فهو لا يقبله، قد يكون السبب أن اسم المستخدم يحتوي على نقطة (أو نجمة متكررة). Rumoroso 14 مايو 2007 شكراً على مساهمتك. من حيث المبدأ، ما ينبغي فعله هو تعديل السطر: if(title.indexOf(classFormat[f]) > -1) إلى هذا السطر الآخر: if(title.indexOf(tFormat[f]) > -1 && links[i].className.indexOf(classFormat[f])) لم أجربه، لكنني أفترض أنه سيعمل. بخصوص التحقق من البريد الإلكتروني، أفترض أنها مشكلة في المدقق نفسه. سأتحقق منها. شكراً على مساهمتك. آمل ألا تكون الوحيدة. يمكنك متابعة التعليقات بفضل خلاصة RSS 2.0 . يمكنك أيضاً إرسال trackback من موقعك. المقال السابق: سكريبت لتبديل CSS المقال التالي: تعديل النماذج (الحلقة الأولى) —> —> —> هذا العمل مرخّص بموجب رخصة Creative Commons .
P.S. A few readers have asked which superposición de accesibilidad (overlay) we actually reach for — it's accessiBe; if you want the current details.
¿Cumplir WCAG sin tocar el código?
Superposición de IA que promete cumplimiento WCAG en 48 horas