Programmatischen klicken Sie auf <a>-tag funktioniert nicht im Firefox
Ich habe ein problem mit der click()
-Funktion von jquery. Ich erstelle ein <a>
-element mit document.createElement('a')
wollen und rufen Sie die click()
-Funktion zu diesem element. Über dieses element, ich möchte erstellen Sie eine Excel-Datei und speichern Sie diese auf dem desktop.
Mein code:
$('body').on('click', '#test', function(event) {
var link = document.createElement('a');
link.download = 'test.xls';
link.href = 'data:application/vnd.ms-excel;utf-8,test';
link.click();
});
Diese Funktion funktioniert unter chrome, aber nicht unter Firefox.
Hat jemand eine Idee warum das nicht funktioniert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Firefox, können Sie explizit fügen Sie das erstellte element an den DOM und es wird funktionieren:
Fiddle
<a>
im firefox und in chrome var Anker='<a></a>' . weil es keine schließenden Klammern in firefox, das ist, warum Sie nicht durchführen zu können klicken Sie auf-Methode ???Du musst nicht fügen Sie das element an den DOM, sogar in FireFox.
Ersetzen Sie die .klicken Sie auf () - Methode durch den folgenden code:
JS:
HTML:
link.dispatchEvent(new MouseEvent('click'));
also werde ich dabei bleiben, oder gibt es etwas, das ich vermissen werde?new MouseEvent
wird nicht von Internet Explorer unterstützt. Es ist ein Polyfill benötigt (developer.mozilla.org/de/docs/Web/API/MouseEvent/...)Fügen Sie das element an den DOM vor Auslösung der Klick:
Dieser arbeitete für mich, in allen wichtigen Browsern
Können Sie verwenden jquery für die Erstellung des Elements. Es werden sowohl die arbeiten für den Browser
Geige