Foros del Web » Programando para Internet » Javascript »

Compatibilidad de removeAttribute() en IE8. Que opinan?

Estas en el tema de Compatibilidad de removeAttribute() en IE8. Que opinan? en el foro de Javascript en Foros del Web. Hola. Tengo el siguiente problema. Estoy utilizando la función javascript removeAttribute() para quitar la propiedad readonly de unos input type='text' . Básicamente removeAttribute('readonly'); mediante un ...
  #1 (permalink)  
Antiguo 13/11/2012, 10:55
af1
 
Fecha de Ingreso: junio-2010
Mensajes: 87
Antigüedad: 14 años, 4 meses
Puntos: 2
Compatibilidad de removeAttribute() en IE8. Que opinan?

Hola. Tengo el siguiente problema.

Estoy utilizando la función javascript removeAttribute() para quitar la propiedad readonly de unos input type='text'.

Básicamente removeAttribute('readonly'); mediante un ciclo por cada elemento.

Esto funciona bien en varios navegadores (FireFox, Opera, inclusive hasta en IE9), pero no esta funcionando para IE8.

Haciendo pruebas con el navegador IE8, ví que el ciclo con el cual recorro los elementos está funcionando bien, puedo obtener sus referencias. Pero el problema está cuando los quiero habilitar con la instrucción: "removeAttribute('readonly');" .


Alguna sugerencia?

Gracias.
  #2 (permalink)  
Antiguo 13/11/2012, 11:46
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Compatibilidad de removeAttribute() en IE8. Que opinan?

Esto quizas te puede servir: http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Saludos.
  #3 (permalink)  
Antiguo 13/11/2012, 13:31
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Respuesta: Compatibilidad de removeAttribute() en IE8. Que opinan?

No tengo un IE8 para probar, pero debería funcionar.
Lástima que aquí tienen la maldita costumbre de venir a plantear "bugs" sin un ejemplo para saber si es un error del navegador o del programador.

En IE6 seguro anda. Pero lo que no entiendo es por qué "removés el atributo" ¿hay algún motivo para hacerlo así?. Yo lo vi hace poco en un ejemplo, pero puesto por alguien que no tenía la menor idea de JS. Y era evidente.

Probá estos dos, y contanos qué diferencia tienen con tu código.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript">
onload = function(){ 
document.getElementById("alfa").removeAttribute('readonly', false);
//document.getElementById("alfa").readOnly = false; 
}
</script>
</head>
<body>
<input readonly id=alfa value="QWERTY">
</body>
</html>


Edición: perdón, estoy releyendo el tema, y doy por seguro que hay un error en

Cita:
Pero el problema está cuando los quiero habilitar con la instrucción: "removeAttribute('readonly');" .
Obviamente quisiste decir "deshabilitar"; yo lo leí así, porque de otra forma habría que banearte...

Última edición por furoya; 13/11/2012 a las 13:36 Razón: Me da miedo mencionarla...
  #4 (permalink)  
Antiguo 13/11/2012, 14:15
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Compatibilidad de removeAttribute() en IE8. Que opinan?

buenas,
en iexplorer funciona removeAttribute al igual que otros métodos parecidos del DOM. el caso de iexplorer con estos métodos es que el atributo es case-sensitive y debe indicarse tal como se escribiría en forma de propiedad. es decir, el atributo readonly en javascript se escribe como readOnly. entonces, para iexplorer se debe escribir como removeAttribute("readOnly").
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 13/11/2012, 16:38
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Respuesta: Compatibilidad de removeAttribute() en IE8. Que opinan?

Es que justamente para eso está el false, para quitar el "case-sensitive". Así funciona en todos.
O debería, vamos a esperar la confirmación.
  #6 (permalink)  
Antiguo 13/11/2012, 17:25
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Compatibilidad de removeAttribute() en IE8. Que opinan?

@furoya, esa implementación será propia de algún navegador. según la documentación de la api en w3.org, en ninguna de las versiones existe un segundo parámetro:
dom level 3, dom level 2, dom level 1.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 13/11/2012, 17:41
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Compatibilidad de removeAttribute() en IE8. Que opinan?

Hola:

En todos los navegadores y sus diferentes versiones se asigna false al atributo y se vuelve a activar... de todos modos, con los controles de los formularios es preferible no tocar mucho los atributos porque pueden dar problemas... por razones de seguridad tal vez.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 13/11/2012, 18:32
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Compatibilidad de removeAttribute() en IE8. Que opinan?

removeAttribute() solo trabaja en IE(7/8/9), y solo sirve para remover atributos inherentes al estilo del objeto, por ejemplo
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>Html5</title>
  5. <script type="text/javascript">
  6. function RemoverBg_1(boton) {
  7. boton.style.removeAttribute ("backgroundColor");
  8. }
  9. function RemoverBg_2(boton) {
  10. boton.style.removeAttribute ("backgroundcolor",0);
  11. }
  12. function RemoverBg_3(boton) {
  13. boton.style.removeAttribute ("backgroundcolor");
  14. }
  15. </head>
  16. <p>
  17. <button onclick="RemoverBg_1(this);" style="background-color:lime;">Quitar color de fondo</button>
  18. </p>
  19. <p>
  20. <button onclick="RemoverBg_2(this);" style="background-color:red;">Quitar color de fondo</button>
  21. </p>
  22. <p>
  23. <button onclick="RemoverBg_3(this);" style="background-color:green;">Quitar color de fondo 3 (no funcionará)</button>
  24. </p>
  25. </body>
  26. </html>
El 2º parámetro al que hace referencia @furoya, con valor 0 hace "noCase" la referencia a la propiedad.
el equivalente para navegadores NO IE es removeProperty()

Para quitar el readonly
elemento.readOnly = false;


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 13/11/2012, 20:06
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Respuesta: Compatibilidad de removeAttribute() en IE8. Que opinan?

Al final me hicieron dudar.
Sí, por supuesto, lo de poner elemento.readOnly = false; es evidente, así se debería hacer en vez de borrar y reescribir el atributo con sus valores. Y no quiero ser mal pensado, pero temo saber de donde viene eso. Por eso lo dejé aclarado en mi ejemplo.

Con respecto a lo otro; funciona en todos, pero no en todos los casos.

Dejo la versión "final", que me falta probar en IE, pero supongo que si son los inventores del engendro, lo tienen que aceptar en todas las versiones.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript">
function bravo(){ 
document.getElementById("alfa").removeAttribute('readonly', false);
//document.getElementById("alfa").readOnly = false; 
}

function charly(){ 
document.getElementById("alfa").setAttribute('readonly', 'readonly', false);
//document.getElementById("alfa").readOnly = true; 
}
</script>
</head>
<body>
<input readonly id=alfa value="QWERTY">
<input type=button onclick=bravo() value="sin readonly">
<input type=button onclick=charly() value="con readonly">
</body>
</html>
  #10 (permalink)  
Antiguo 13/11/2012, 20:18
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Compatibilidad de removeAttribute() en IE8. Que opinan?

Probada y funcionando en IE 7/8/9
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: compatibilidad, funcion, ie8, input, removeattribute
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:57.