3 Stimmen

Ein dynamisch erstellter iframe, der zum Herunterladen einer Datei verwendet wird, löst beim Laden mit Firebug aus, aber nicht ohne

EDITAR Da dieses Problem nun soweit "gelöst" ist, dass es funktioniert, möchte ich wissen, warum. Für die Lösung, siehe meinen Kommentar unten.

Ich habe eine Webanwendung, die wiederholt wav-Dateien dynamisch (nach einer Zeitüberschreitung oder auf Anweisung des Benutzers) in einen iframe herunterlädt, um den Standard-Audioplayer zu veranlassen, sie abzuspielen. Die Anwendung zielt nur auf FF 2 oder 3 ab. Um festzustellen, wann die Datei vollständig heruntergeladen ist, hoffe ich, den window.onload-Handler für den iframe zu verwenden. Auf der Grundlage von diese Antwort von stackoverflow.com Ich erstelle jedes Mal einen neuen iframe. Solange Firebug auf dem Browser, der die Anwendung verwendet, aktiviert ist, funktioniert alles wunderbar. Ohne Firebug wird der Onload nie ausgelöst. Die Version von firebug ist 1.3.1, während ich Firefox 2.0.0.19 und 3.0.7 getestet habe. Irgendwelche Ideen, wie ich den onload des iframe dazu bringen kann, zuverlässig auszulösen, wenn die wav-Datei heruntergeladen wurde? Oder gibt es eine andere Möglichkeit, den Abschluss des Downloads zu signalisieren? Hier ist der relevante Code:

HTML (das einzige Attribut von hidden ist display:none;):

<div id="audioContainer" class="hidden">
</div>

JavaScript (könnte auch jQuery verwenden, aber innerHTML ist schneller als html(), soweit ich gelesen habe):

waitingForFile = true; // (declared at the beginning of closure)
$("#loading").removeClass("hidden");
var content = "<iframe id='audioPlayer' name='audioPlayer' src='" +
    /path/to/file.wav + "' onload='notifyLoaded()'></iframe>";
document.getElementById("audioContainer").innerHTML = content;

Und der Inhalt von notifyLoaded:

function notifyLoaded() {
    waitingForFile = false; // (declared at beginning of the closure)
    $("#loading").addClass("hidden");
 }

Ich habe auch versucht, den iframe über document.createElement zu erstellen, aber ich fand das gleiche Verhalten. Die onload ausgelöst jedes Mal mit Firebug aktiviert und nie ohne sie.

EDITAR: Die Information, wie der iframe deklariert wird, wurde korrigiert und der Code der Callback-Funktion hinzugefügt. Nein, keine console.log-Aufrufe hier.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X