2009-03-03 6 views
21

lo general, si es necesario establecer un atributo de estilo en JavaScript, que dicen algo como:¿Hay una forma de navegador cruzada de establecer style.float en Javascript?

element.style.attribute = "value"; 

hay ligeras variaciones, pero por lo general el nombre del atributo es una similar, aunque CamelCased, versión del HTML nombre de atributo.

El problema para mí es que el atributo float no funciona. Float es una palabra clave en JavaScript, por lo que style.float crea todo el JavaScript para el salto de página. Busqué en MSDN, y decía usar styleFloat así:

element.style.styleFloat = "value"; 

Eso solo funciona en IE. Firefox, Safari, Chrome, Opera: ninguno de ellos parece tener una respuesta. ¿Dónde estoy equivocado? Tiene que haber una respuesta simple a esto.

Respuesta

35

Uso cssFloat como en ...

element.style.cssFloat = "value"; 

que funciona en todo, excepto IE 8 años o más, pero siempre se puede detectar el navegador y el interruptor, o simplemente fijar los dos. Desafortunadamente, no hay forma de establecer un solo valor de estilo para que funcione en todos los navegadores.

Entonces, para resumir, todo el mundo tiene que establecer el flotador, a decir:

element.style.styleFloat = "value"; 
element.style.cssFloat = "value"; 

Eso debe trabajo en todas partes.

+1

'¿Por qué no element.style [ 'float'] = "valor";' ? No hay restricciones en los caracteres que puede usar en un objeto javascript. – doug65536

+0

Enlace de MDN: https://developer.mozilla.org/en-US/docs/Web/CSS/float – Basilevs

0

mejor:

element.style.styleFloat = element.style.cssFloat = "value"; 
+1

¿Puede ampliar cómo funciona esto para resolver la pregunta? –

0

Se trata de un enfoque de función de aspiración:

if (typeof elmt.style.cssFloat != "undefined") 
    elmt.style.cssFloat = "none"; 
else 
    elmt.style.styleFloat = "none"; 

Pero por lo general no es necesario que se moleste con esta detección. He probado el enfoque de user2719099 con Chrome como a continuación:

 elmt.style.cssFloat = elmt.style.styleFloat = "none"; 
     console.log(elmt.style.cssFloat, elmt.style.styleFloat); 

y el resultado es bastante bueno en la consola:

none none 
Cuestiones relacionadas