Hallo,
hier mal eine kurze Beschreibung:
Ich habe eine Form mit einem IFrame. Dieses nutze ich um den Inhalt einer Datei (input type="file") mittels einem Javascript Submit zu holen. Dabei wird kurzzeitig das target und das action Attribut der Form geändert, da für das auslesen und setzen der Daten eine andere PHP-Datei zuständig ist.
Auszug aus der HTML (2xform mit diversen input Elementen, XHTML valide):
<form name="ul_action" enctype="multipart/form-data" action="/test1.php" method="post" target="_self">
<iframe style="display:none;" name="temp_content" id="temp_content"></iframe>
<input type="file" id="ul1" name="ul2" value="" />
<span onclick="load_content();">Lade Inhalt von ul1</span>
<textarea id="display_content" name="display_content"></textarea>
</form>
vollständige Funktion
// Nutzung von jQuery
function load_content() {
temptar = $("#ul_action").attr("target");
tempact = $("#ul_action").attr("action");
$("#ul_action").attr("target", "temp_content");
$("#ul_action").attr("action", "/test2.php");
$("#ul_action").submit();
$("#ul_action").attr("target", temptar);
$("#ul_action").attr("action", tempact);
}
Klicke ich auf "Lade Inhalt von ul1", dann scheint es so, als ob es kurzzeitig einen Hänger gibt, obwohl load_content() umgehend aufgerufen wird. Anscheinend gibt es in dem Skript einen Hänger. Erst nach einer gefühlten Sekunde wird der Submit ausgeführt und der Inhalt in der textarea platziert. Nur habe ich keine Idee warum. Dauert es solange bis die DOM-Elemente gefunden werden, in dem Fall die form. Es ist dabei egal ob ich jQuery nutze, oder den Weg über document.getElementById gehe. Den Hänger gibt es im FF9 und IE8. Der Chrome führt es ohne Verzögerung aus. Es passiert bei dem Klick auch nichts anderes, nur der Submit.
Kann mir bitte jemand einen Rat geben, an was es liegen kann.
Danke & Gruß