Alternativa para 'className' em JavaScript para o IE Mobile?
-
05-09-2019 - |
Pergunta
Eu estou trabalhando em uma aplicação web móvel que precisa trabalhar no IE Mobile. Já reduzimos um erro de JavaScript Eu estou começando a IE Mobile não suporte a propriedade 'className
' (motor IE4 ...). Estou tentando encontrar uma alternativa que funciona em todos os navegadores com alterações de código mínimo (já tenho algumas bibliotecas que o uso 'className
').
A abordagem mais fácil que eu poderia pensar seria modificar protótipo elemento do IE para incluir className (se não tiver), o problema é que eu não sei o que a alternativa ao 'className
' está no IE Mobile .
Eu tentei isso:
element.className = element.class;
O que obviamente não funciona porque class
é uma palavra-chave em JavaScript e meu compressor JS não gosta disso, e provavelmente não é de qualquer maneira válido.
Além de usar 'setAttribute ()' em todos os lugares que eu preciso modificar a classe de um elemento, existe alguma propriedade que eu possa usar que é o equivalente a className?
Solução
Enquanto você não pode evitar o uso setAttribute()
, você pode ter uma linha para fora do playbook jQuery e usar um procedimento ajudante com um parâmetro opcional. Este código não foi testado, mas deve funcionar:
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));
Outras dicas
Sem atributo, não. Eu tenho medo que você está preso com getAttribute () e setAttribute ().
No seguimento que John Millikin, você poderia mesmo fazer essa parte função do protótipo elemento do IE:
Element.prototype.getClass = function() {
return obj.getAttribute ('class');
}
Element.prototype.setClass = function(newClass) {
return obj.setAttribute('class', newClass);
}
ou se você quiser um método de combinação como John fornecido ...
Element.prototype.className = function(newClass) {
if (!newClass)
return this.getClass();
return this.setClass(newClass);
}