Seltsames Verhalten des von jQuery im IE festgelegten iframe-Attributs "name"
Ich lade eine Datei im Ajax-Stil hoch, indem ich die Datei in einem Formular in einem Iframe poste und merkwürdiges Verhalten im IE feststelle (scheint sowohl in 6 als auch in 8 vorzukommen). Grundsätzlich in IE das Formular nichttarget
der iframe richtig, so dass die Antwort in einem neuen Fenster angezeigt wird (anstatt im iframe). Sie können das Problem mit der folgenden minimalen Menge von HTML / JS reproduzieren:
<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>
Jetzt (bevor Sie eine Antwort posten) habe ich eine Untersuchung durchgeführt (unter Verwendung der IE8-Entwicklertools) und es scheint, dass die.attr("name", frameName)
fügt tatsächlich das Attribut als hinzusubmitName="myFrame"
statt einfachname="myFrame"
. Auf dieser Basis habe ich das Problem gelöst, indem ich den iframe-Erstellungscode in einen etwas unangenehmeren Code geändert habe:
var $iframe = $("<iframe src=\"about:blank\" name=\"" + frameName + "\" />")
.appendTo("body");
Wenn Sie diese Änderung vornehmen, wird das Formular wie gewünscht in den iframe übernommen.
Meine Fragen sind:
Warum nicht?.attr("name", ...)
Wie erwartet arbeiten?Ist es ein Fehler in jQuery, ein Fehler im IE (sicherlich nicht!?!) Oder fehlt mir etwas Offensichtliches?Wo kommt diesubmitName
Attribut kommt von & was ist sein Zweck?