Pregunta

Estoy trabajando en una aplicación web móvil que tiene que trabajar en IE Mobile. He reducido un error de JavaScript Estoy llegando a IE Mobile no apoyar la propiedad 'className' (motor de Internet Explorer 4 ...). Estoy tratando de encontrar una alternativa que funciona en todos los navegadores con cambios mínimos en el código (ya tengo unas pocas bibliotecas que utilizan 'className').

El método más sencillo de lo que podía pensar sería modificar prototipo elemento de IE para incluir className (si no lo tiene), el problema es que no sé cuál es la alternativa a 'className' está en el móvil del IE .

He intentado esto:

element.className = element.class;

Lo que obviamente no funciona porque class es una palabra clave en JavaScript y mi JS compresor no le gusta, y que probablemente no es válida todos modos.

Aparte del uso de 'setAttribute ()' en todas partes tengo que modificar la clase de un elemento, ¿hay alguna propiedad que puede utilizar que es el equivalente a className?

¿Fue útil?

Solución

Aunque no se puede evitar el uso de setAttribute(), se puede tomar una línea del libro de jugadas jQuery y utilizar un procedimiento de ayuda con un parámetro opcional. Este código no se ha probado, pero se debe trabajar;

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

Otros consejos

Ningún atributo, no. Me temo que está pegado con getAttribute () y setAttribute ().

En seguimiento de lo que John Millikin, incluso se podría hacer que esa parte de la función prototipo elemento de IE:

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

o si desea un método combinado como John siempre ...

Element.prototype.className = function(newClass) {
    if (!newClass)
        return this.getClass();
    return this.setClass(newClass);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top