Frage

Ich arbeite an einem mobilen Web-App, die im Internet Explorer Mobile arbeiten muss. Ich habe einen JavaScript-Fehler eingrenzen ich bin immer zu IE Handy wird nicht das "className Eigentum (IE4 Motor ...) zu unterstützen. Ich versuche, eine Alternative zu finden, die mit minimalen Änderungen am Code in allen Browsern funktionieren (ich schon ein paar Bibliotheken, die ‚className‘ verwenden).

Der einfachste Ansatz, den ich von sei einfiel IE Element Prototyp ändern schließen classname (wenn er es nicht hat), ist das Problem, dass ich nicht weiß, was die Alternative zu ‚className‘ ist in IE Mobile .

Ich habe das versucht:

element.className = element.class;

Was offensichtlich nicht funktioniert, weil class ein Schlüsselwort in JavaScript ist und mein JS Kompressor mag es nicht, und es ist wahrscheinlich sowieso nicht gültig.

Andere als die Verwendung von ‚setAttribute ()‘ überall Ich brauche ein Element der Klasse zu ändern, gibt es eine Eigenschaft kann ich das ist das Äquivalent zu classname?

War es hilfreich?

Lösung

Während man nicht vermeiden kann setAttribute() verwenden, können Sie eine Zeile aus dem jQuery-Textbuch nehmen und einen Helfer Prozedur mit einem optionalen Parameter verwenden. Dieser Code ist nicht getestet, aber funktionieren soll:

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

Andere Tipps

keine Attribute, nein. Ich fürchte, ich bin mit getAttribute stecken () und setAttribute ().

Im Anschluss an was John Millikin, könnten Sie sogar diese Funktion Teil des IE-Element Prototyps machen:

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

oder wenn Sie wollen eine Combo-Methode wie John vorgesehen ...

Element.prototype.className = function(newClass) {
    if (!newClass)
        return this.getClass();
    return this.setClass(newClass);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top