على الرغم من أن أيام تاريخ JavaScript في استخدام كتل طويلة ومملة من التعليمات البرمجية لاستهداف متصفحات معينة قد انتهت، إلا أنه لا يزال من الضروري أحيانًا استخدام بعض كتل التعليمات البرمجية البسيطة واكتشاف الكائنات للتأكد من أن بعض التعليمات البرمجية تعمل بشكل صحيح على جهاز المستخدم.
في هذه المقالة، سأوضح 7 طرق يختلف بها بناء جملة JavaScript بين Internet Explorer وFirefox.
1. خاصية CSS "العائمة".
الصيغة الأساسية للحصول على خاصية CSS محددة لكائن معين هي الخاصية object.style، والخصائص الموصولة تستخدم الترميز الجملي بدلاً من ذلك. على سبيل المثال، للحصول على سمة لون الخلفية لقسم مع "رأس" المعرف، نحتاج إلى استخدام الصيغة التالية:
document.getElementById("header").style.borderBottom= "1px Solid #ccc";
ولكن بما أن كلمة "float" هي كلمة محجوزة في JavaScript، فلا يمكننا استخدام object.style.float للحصول على السمة "float". إليك كيفية استخدامه في كلا المتصفحين:
بناء جملة IE:
document.getElementById("header").style.styleFloat = "left";
بناء جملة فايرفوكس:
document.getElementById("header").style.cssFloat = "left";
2. أسلوب حساب العناصر
باستخدام object.style.property أعلاه، يمكن لـ JavaScript بسهولة الحصول على نمط CSS المحدد للكائن وتعديله. لكن الحد من بناء الجملة هذا هو أنه يمكنه فقط الحصول على الأنماط المضمنة في HTML، أو الأنماط التي يتم تعيينها مباشرة باستخدام JavaScript. لا يمكن لكائن النمط الحصول على مجموعة أنماط باستخدام أوراق أنماط خارجية. للحصول على "النمط المحسوب" لكائن نستخدم الكود التالي:
بناء جملة IE:
var myObject = document.getElementById("header");
var myStyle = myObject.currentStyle.backgroundColor;
بناء جملة فايرفوكس:
var myObject = document.getElementById("header");
var myComputedStyle = document.defaultView.getComputedStyle(myObject, null);
var myStyle = myComputedStyle.backgroundColor;
3. احصل على سمة "الفئة" للعنصر
كما هو الحال مع السمة "العائمة"، يستخدم المستعرضان أساليب JavaScript مختلفة للحصول على هذه السمة.
بناء جملة IE:
var myObject = document.getElementById("header");
var myAttribute = myObject.getAttribute("className");
بناء جملة فايرفوكس:
var myObject = document.getElementById("header");
var myAttribute = myObject.getAttribute("class");
4. الحصول على السمة "for" للملصق
هو نفس 3. استخدام JavaScript للحصول على السمة "for" للملصق له أيضًا بناء جملة مختلف.
بناء جملة IE:
var myObject = document.getElementById("myLabel");
var myAttribute = myObject.getAttribute("htmlFor");
var
myObject = document.getElementById("myLabel");
var myAttribute = myObject.getAttribute("for");
يتم استخدام نفس الصيغة لطريقة setAtrribute.
5. الحصول على موضع المؤشر
من النادر الحصول على موضع المؤشر لعنصر ما، إذا كنت بحاجة إلى القيام بذلك، فإن بناء جملة IE وFirefox مختلف أيضًا. يعد نموذج التعليمات البرمجية هذا أساسيًا إلى حد ما ويستخدم عادةً كجزء من العديد من معالجات الأحداث المعقدة ويستخدم فقط لوصف الاختلافات. تجدر الإشارة إلى أن النتائج في IE تختلف عن تلك الموجودة في Firefox، لذلك هناك بعض المشاكل في هذه الطريقة. في كثير من الأحيان، يمكن تعويض هذا الاختلاف عن طريق الحصول على "موضع التمرير" - ولكن هذا موضوع لمقالة أخرى.