Wie wird ein Onload-Ereignis ausgelöst, wenn eine Datei in einem Iframe heruntergeladen wird?

Angenommen, wir haben die folgende HTML-Datei:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test iframe download</title>
<script type="text/javascript">

var init = 0;

function download() {
  document.getElementById("dload_frame").src = "http://example.com/dload.py";
}

function alert() {
  if (init == 0) {
    init = 1;
  }
  else {
    document.getElementById("alert_span").innerHTML = "Got it!";
  }
}

</script>
</head>
<body>

  <span id="alert_span">Main content.</span><br/>
  <input type="button" value="Download" id="btn" onclick="download()" />
  <iframe id="dload_frame" src="http://404.com/404" onload="alert()"> </iframe>

</body>
</html>

Nun, wenn die URL, auf die der Iframe src geschrieben wird (in diesem Fall - "http://example.com/dload.py") gibt HTML zurück, kein Problem: Das Onload - Ereignis wird ausgelöst, der Inhalt des Bereichs wird ersetzt, alle sind glücklich.

Wenn der Inhaltstyp der von der URL zurückgegebenen Datei jedoch auf einen Wert festgelegt ist, der den Browser zum Öffnen des Dialogfelds zum Speichern von Dateien zwingt, wird das Ereignis onload des iframe nie ausgelöst.

Gibt es eine Problemumgehung? Die Verwendung von iframes ist nicht erforderlich. Das gewünschte Verhalten besteht darin, einen Rückruf zu starten, nachdem der Browser mit dem Herunterladen der bereitgestellten Datei begonnen hat.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage