Domanda

Sto lavorando su un web app mobile che ha bisogno di lavorare in IE Mobile. Ho ridotto un errore JavaScript sto ottenendo a IE Mobile non supportare la proprietà 'className' (motore di Internet Explorer 4 ...). Sto cercando di trovare un'alternativa che funziona su tutti i browser con minime modifiche al codice (ho già un paio di librerie che utilizzano 'className').

L'approccio più semplice mi veniva in mente sarebbe quella di modificare elemento prototipo di IE per includere className (se non ce l'ha), il problema è che io non so che cosa l'alternativa alla 'className' è in IE mobile .

Ho provato questo:

element.className = element.class;

Il che, ovviamente, non funziona perché class è una parola chiave in JavaScript e il mio compressore JS non piace, e probabilmente non è valida in ogni caso.

Oltre a usare 'setAttribute ()' ovunque ho bisogno di modificare la classe di un elemento, c'è qualche proprietà che posso usare che è l'equivalente di className?

È stato utile?

Soluzione

Mentre non è possibile evitare di utilizzare setAttribute(), si può prendere una linea fuori dal playbook jQuery e utilizzare una procedura di aiuto con un parametro opzionale. Questo codice non è testato, ma dovrebbe funzionare:

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

Altri suggerimenti

No attributi, no. Temo che sei bloccato con getAttribute () e setAttribute ().

In seguito a ciò che John Millikin, si potrebbe anche fare quella parte funzione del prototipo elemento di IE:

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

o se si vuole un metodo di combo come John fornito ...

Element.prototype.className = function(newClass) {
    if (!newClass)
        return this.getClass();
    return this.setClass(newClass);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top