Question

Je travaille sur une application web mobile qui a besoin de travailler dans IE Mobile. J'ai PRECISEE une erreur JavaScript Je reçois à IE Mobile ne supportant pas la propriété « className » (moteur IE4 ...). Je suis en train de trouver une alternative qui fonctionne sur tous les navigateurs avec des changements de code minimal (je l'ai déjà quelques bibliothèques qui utilisent « className »).

L'approche la plus simple que je pouvais penser serait de modifier le prototype d'élément de IE pour inclure className (si elle ne l'a pas), le problème est que je ne sais pas ce que l'alternative à « className » est dans IE Mobile .

Je l'ai essayé ceci:

element.className = element.class;

Ce qui ne fonctionne évidemment pas parce que class est un mot-clé en JavaScript et mon compresseur JS ne l'aime pas, et il est probablement pas valide en tout cas.

Autre que d'utiliser « setAttribute () » partout où je dois modifier la classe d'un élément, est-il une propriété que je peux utiliser soit l'équivalent à className?

Était-ce utile?

La solution

Bien que vous ne pouvez pas éviter d'utiliser setAttribute(), vous pouvez prendre une ligne de la PlayBook jQuery et utiliser une procédure d'aide avec un paramètre optionnel. Ce code est non testé, mais devrait fonctionner:

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));

Autres conseils

Aucun attribut, non. Je crains que vous êtes coincé avec getAttribute () et setAttribute ().

Faisant suite à ce que John Millikin, vous pourriez même faire partie de la fonction du prototype d'élément d'IE:

Element.prototype.getClass = function() {
    return obj.getAttribute ('class');
}
Element.prototype.setClass = function(newClass) {
    return obj.setAttribute('class', newClass);
}

ou si vous voulez une méthode combo comme John fourni ...

Element.prototype.className = function(newClass) {
    if (!newClass)
        return this.getClass();
    return this.setClass(newClass);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top