• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Fenster schließen wenn ein Download über ASHX-Handler getriggert wurde

mikexmagic

New member
Hallo zusammen,

kurze Version:
Code:
var dl=window.open("");
soapfunction(bla,function(id){
   dl.location = 'handler.ashx?id='+id; //ein Download startet
   dl.close(); //Aber erst wenn der Download gestartet ist.
}
function soapfunction(parameter,callback) {
   //SOAP wird ausgeführt
   callback(soapAntwort);
}

Lange Version:
(vorweg: auf die serverseitigen SOAP- und ASHX-Scripte und Methoden habe ich wenig Einfluss)

in meinem Projekt greife ich auf ein ASHX-Script zu, welches mir eine Datei zum download schickt.
Welche Datei ich benötige, übergebe ich per ID an das Script. Die ID liefert mir vorher eine SOAP-Anfrage...

Vom Ablauf her:
-> User fordert einen Report als PDF an
-> neuer Tab mit Dummy-Page wird geöffnet (verhindert Popup-Blocker-Meldung)
-> SOAP-Anfrage triggert Serverseitige PDF-Erstellung und Antwortet mit einer ID.
-> Dummy-Tab wird mit .location('handler.ashx?id=....') aktualisiert
-> Download der PDF startet

Und jetzt, wenn der Download läuft, soll der Dummy-Tab geschlossen werden.
Setze ich ein .close() ab, wird der Tab aber geschlossen BEVOR der Download startet.

WIE fange ich ab, ob der Download gestartet ist?


Ich hoffe es ist nicht zu kompliziert beschrieben :(
 
Mit dem passenden Event. Ich würd's mal mit dem load-Event probieren.

ich bin mir nicht sicher wie genau ich das abfange. Was ich bisher versuch habe, klappte alles nicht...

Code:
var dl=window.open("");

//und jetzt??
dl.addEventListener('load',function(){console.log('load')}) //hier bekomme ich keine Ausgabe
dl.document.addEventLis....usw // genauso wenig

$(dl.document).ready(function(){consol.log('ready')}) //das klappt. Zumindest in der Konsole.

Mache ich statt dem console.log ein dl.close() wird meistens das Fenster geschlossen BEVOR der Download startet. Manchmal klappts... zu 80% jedoch nicht...
 
Zurück
Oben