2016-04-15 5 views
1

Ich bin ein spezifisches Problem für IE mit dieser Funktion:Wie programmgesteuert auf einen Link in IE klicken?

function downloadFileFromUserControl(filename) { 
    var name = filename.split("/"); 
    var fName = name[name.length - 1]; 
    console.log("IE speaking, I'm just going to take a little nap during this request"); 
    var link = document.createElement('a'); 
    link.download = fName; 
    link.href = filename; 
    link.click(); 
    console.log("Oh, I'm late to the party?? Back to sleep I guess"); 
} 

In Chrome diese Funktion einwandfrei funktioniert, verwende ich diese PDF-Dateien von Hyperlinks zum Download bereit. Keine Fehler, es wird nur auf der Konsole veröffentlicht.

Gibt es einen zusätzlichen Code, den IE braucht, um das zu erreichen? Danke

+0

Was genau falsch läuft ? Erhalten Sie einen Fehler? –

+3

Es würde mich nicht überraschen, wenn ein DOM-Element in IE in das DOM eingefügt werden muss, um ein Klickereignis zu verarbeiten oder wenn Sie den Klick wie 'setTimeout (function() {link.click()} machen müssen, 20); 'oder beides. – jfriend00

+0

Es führt die Funktion, aber keinen Fehler. Es macht nichts, als auf die Konsole zu posten –

Antwort

0

Nachdem das Element erstellt wurde, verwenden Sie die Methode element.appendChild() oder element.insertBefore(), um es in die document einzufügen.

Es ist, wie es funktioniert, ist w3c reference

+1

Probieren Sie dies aus, gibt mir einen Script-Hierarchie-Fehler. Dieser Fall ist meiner Art ähnlich: http://stackoverflow.com/questions/23071968/jquery-throws-script5022-hierarchyrequesterror-when-attempted-to-append-a-jquer. Dies ist eine Webforms App (es ist Wartung, lass mich in Ruhe!). Diese JS-Funktion befindet sich auf meiner "Master" -Seite. Die Funktion wird von einer Benutzersteuerdatei (.ascx) aufgerufen. –

+0

Ok, also hast du die Lösung ausprobiert, die in der von dir erwähnten ähnlichen Frage enthalten ist –

0

IE beziehen sich nicht auf den „Download“, dh nur neuere Browser-Attribut unterstützen. Rand, müssen Sie mit der Verwendung von neuen HTML5-Funktionen in alten Browsern, vorsichtig sein, die meiste Zeit benötigen Sie eine Art „Rückfall“ für diesen speziellen Fall hinzufügen würde ich vorschlagen:

if (typeof link.download !== typeof undefined && link.download !== false) { 
     var message = document.getElementById('Some <Span> ID Here').innerHTML('Right-click and select "Download Linked File"'); 
    } 
Verwandte Themen