Estoy haciendo una carga de archivo de estilo ajax publicando el archivo en un formulario para un iframe y noté un comportamiento extraño en IE (parece suceder en ambos 6 & 8). Básicamente en IE, el formulario no target
el iframe correctamente por lo que la respuesta aparece en una nueva ventana (en lugar de en el iframe). Puede reproducir el problema con el siguiente conjunto mínimo de HTML/JS:Comportamiento extraño del atributo iframe `name` establecido por jQuery en IE
<html>
<head>
<script src="http://code.jquery.com/jquery-1.3.2.js"></script>
<script>
$(document).ready(function(){
var frameName = "myFrame";
var $iframe = $("<iframe src=\"about:blank\" />")
.attr("name", frameName)
.appendTo("body");
var $uploadForm = $("<form action=\"http://www.google.com/search\" />")
.attr("target", frameName)
.append("<input type=\"text\" name=\"q\" />")
.append("<input type=\"submit\" />")
.appendTo("body");
});
</script>
</head>
<body>
</body>
</html>
ahora (antes de publicar una respuesta), he hecho un poco de investigación (utilizando herramientas de desarrollo de IE8) y parece que la .attr("name", frameName)
está añadiendo el atributo como submitName="myFrame"
en lugar de simplemente name="myFrame"
. Basado en esto, he resuelto el problema cambiando el código iframe creación de los poco más desagradable:
var $iframe = $("<iframe src=\"about:blank\" name=\"" + frameName + "\" />")
.appendTo("body");
Este cambio hace que el mensaje formulario en el marco flotante según se desee.
Mis preguntas son:
- Por qué no
.attr("name", ...)
trabajo como se esperaba? - ¿Es un error en jQuery, un error en IE (seguramente no!?!), ¿O me falta algo obvio?
- ¿De dónde viene el atributo
submitName
de & cuál es su propósito?
Gracias por los antecedentes, creo que esta es una respuesta tan definitiva como la que voy a obtener, mostrando a cualquier ex-desarrollador de IE publicando (aunque no puedo imaginarlos admitiendo el hecho: P), entonces estoy aceptando eso. Es bueno saber que al menos el error desaparece en IE8 si tienes el doctype correcto en su lugar. – Alconja
'getElementsByName', la agrupación por radio y demás parecen funcionar, aunque los atributos' name' siguen siendo los mismos y solo cambian los atributos 'submitName'" ¿Ha tenido algún problema con las cosas que mencionó? Probé esto en el modo de compatibilidad ie7 en ie8, y todo parecía funcionar. – cic
Algo más de información: http://thunderguy.com/semicolon/2005/05/23/setting-the-name-attribute-in-internet-explorer/ – cic