Sto eseguendo un caricamento di file in stile Ajax pubblicando il file in un modulo su un iframe e notando alcuni comportamenti strani in IE (sembra che si verifichi in entrambi gli & 8). Fondamentalmente in IE il modulo non è target
l'iframe correttamente così la risposta appare in una nuova finestra (invece che nell'iframe). È possibile riprodurre il problema con il seguente set minimo di HTML/JS:Comportamento strano dell'attributo iframe `name` impostato da jQuery in 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>
Ora (prima di postare una risposta), ho fatto qualche indagine (utilizzando strumenti di sviluppo di IE8) e sembra che il .attr("name", frameName)
è in realtà aggiungendo l'attributo come submitName="myFrame"
anziché semplicemente name="myFrame"
. Sulla base di questo, ho risolto il problema modificando il codice di creazione iframe al leggermente nastier:
var $iframe = $("<iframe src=\"about:blank\" name=\"" + frameName + "\" />")
.appendTo("body");
Questa modifica rende il palo forma nell'iframe lo desideri.
Le mie domande sono:
- Perché non
.attr("name", ...)
lavoro come previsto? - Si tratta di un bug in jQuery, un bug in IE (sicuramente no!?!), O mi manca qualcosa di ovvio?
- Da dove viene l'attributo
submitName
da & qual è il suo scopo?
Grazie per lo sfondo, penso che questa sia la risposta definitiva che otterrò, escludendo qualsiasi postazione di sviluppatori di IE (anche se non posso immaginarli ammettere il fatto: P), quindi accetto esso. È bello sapere che almeno il bug scompare in IE8 se hai il doctype giusto sul posto. – Alconja
'getElementsByName', il radiocomando e così via sembrano funzionare anche se gli attributi' name' rimangono gli stessi e solo il 'submitName'" attributo "change - hai riscontrato problemi con le cose che hai menzionato? Ho provato questo in modalità di compatibilità ie7 in ie8, e tutto sembrava funzionare. – cic
Altre informazioni: http://thunderguy.com/semicolon/2005/05/23/setting-the-name-attribute-in-internet-explorer/ – cic