Comportamiento extraño del atributo iframe `name` establecido por jQuery en IE
Estoy haciendo una carga de archivos de estilo ajax al publicar el archivo en un formulario en un iframe y noté un comportamiento extraño en IE (parece que ocurre tanto en 6 como en 8). Básicamente en IE el formulario no lo hacetarget
el iframe correctamente para que la respuesta aparezca en una nueva ventana (en lugar de en el iframe). Puede reproducir el problema con el siguiente conjunto mínimo de HTML / JS:
<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), hice una investigación (utilizando las herramientas de desarrollo de IE8) y parece que.attr("name", frameName)
en realidad está agregando el atributo comosubmitName="myFrame"
en lugar de simplementename="myFrame"
. Basándome en esto, resolví el problema cambiando el código de creación del iframe a un poco más desagradable:
var $iframe = $("<iframe src=\"about:blank\" name=\"" + frameName + "\" />")
.appendTo("body");
Al hacer este cambio, el formulario se publica en el iframe como se desee.
Mis preguntas son:
Porque no.attr("name", ...)
trabajar como se esperaba?¿Es un error en jQuery, un error en IE (seguramente no!?!), O me falta algo obvio?Donde hace elsubmitName
atributo viene y cuál es su propósito?