2017-02-20 2 views
0

Ich bin derzeit versucht, eine Datei herunterladen mit folgendem Code in Javascript auslösen: window.location.href = downloadUrl;ändert window.location.href in Firefox ohne Schließung WebSockets

, die in Chrome, IE und Edge-funktioniert gut, aber leert Firefox die Seite aufgrund der neuen URL und schließt damit alle geöffneten Websockets. Ich weiß, dass dies ein merkwürdiger Manierismus von FF ist, aber gibt es einen Workaround, den ich benutzen kann? Es würde mit arbeiten und die neue Registerkarte nach einer bestimmten Zeitüberschreitung schließen, aber ich möchte verhindern, eine neue Registerkarte nur zum Auslösen des Downloads zu öffnen.

Jede Hilfe wäre dankbar, danke.

Antwort

0

Nach vieler Forschung und Experimentieren fand ich die folgende Lösung:

einen Link in JavaScript erstellen mit dem Download-Attribute, klicken Sie darauf und entfernen Sie es nach einiger Zeit (ich benutze ExtJS):

var a = document.createElement("a"); 
document.body.appendChild(a); 
a.style = 'display: none'; 
a.href = downloadUrl; 
a.download = 'test.zip'; 
a.click(); 

Ext.defer(function(link) { 
    document.body.removeChild(link); 
}, 200, this, [a]);