البديل إلى "Classname" في JavaScript ل IE Mobile؟
-
05-09-2019 - |
سؤال
أنا أعمل على تطبيق ويب للجوال يحتاج إلى العمل في IE Mobile. لقد ضاقت خطأ JavaScript في غضون IE المحمول لا يدعم "className
'الخاص (محرك IE4 ...). أحاول العثور على بديل يعمل عبر جميع المتصفحات بتغييرات الحد الأدنى من التعليمات البرمجية (لدي بالفعل عدد قليل من المكتبات التي تستخدمها "className
').
أسهل نهج يمكن أن أفكر فيه هو تعديل النموذج الأولي عناصر IE لتضمين ClassName (إذا لم يكن لديك)، فإن المشكلة هي أنني لا أعرف ما البديلclassName
'في IE المحمول.
لقد جربت هذا:
element.className = element.class;
من الواضح أنها لا تعمل بسبب class
تعد الكلمة الأساسية في JavaScript وضاغط JS الخاص بي لا يعجبك، وربما غير صالح على أي حال.
بخلاف استخدام "Setattribute ()" في كل مكان أحتاج إلى تعديل فئة العنصر، هل هناك أي خاصية يمكنني استخدامها هي ما يعادل اسم Classname؟
المحلول
بينما لا يمكنك تجنب استخدام setAttribute()
, ، يمكنك أن تأخذ خطا من JQuery Playbook واستخدم إجراء مساعد مع معلمة اختيارية. هذا الرمز مختبر، ولكن يجب أن تعمل:
var className = function (obj, value)
{
if (value !== undefined)
{
return obj.setAttribute ('class', value);
}
return obj.getAttribute ('class');
};
// Use as
alert (className (element));
className (element, "foo");
alert (className (element));
نصائح أخرى
لا سمة، لا. أخشى أنك عالق مع GetAttribute () و Setattribute ().
متابعة ما john millikin، يمكنك حتى أن تجعل هذه الوظيفة جزءا من نموذج عنصر IE:
Element.prototype.getClass = function() {
return obj.getAttribute ('class');
}
Element.prototype.setClass = function(newClass) {
return obj.setAttribute('class', newClass);
}
أو إذا كنت تريد طريقة التحرير والسرد مثل John Save ...
Element.prototype.className = function(newClass) {
if (!newClass)
return this.getClass();
return this.setClass(newClass);
}