J’ai un problème avec la fonction click()
de jquery. Je crée un élément avec
document.createElement('a')
et souhaite appeler la fonction click()
propos de cet élément. À propos de cet élément, je veux créer un fichier Excel et l’enregistrer sur le bureau.
Mon 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(); });
Cette fonction fonctionne sous chrome, mais pas sous Firefox.
Exemple de travail
Quelqu’un at-il une idée pourquoi cela ne fonctionne pas?
Dans Firefox, vous pouvez explicitement append l’élément créé au DOM et cela fonctionnera:
$('body').on('click', '#test', function(event) { var link = document.createElement('a'); // Add the element to the DOM link.setAtsortingbute("type", "hidden"); // make it hidden if needed link.download = 'test.xls'; link.href = 'data:application/vnd.ms-excel;utf-8,test'; document.body.appendChild(link); link.click(); link.remove(); });
Violon
Vous n’avez pas besoin d’append l’élément au DOM, même dans FireFox. Remplacez la méthode .click () par le code suivant:
link.dispatchEvent(new MouseEvent(`click`, {bubbles: true, cancelable: true, view: window}));
Vous pouvez utiliser jQuery pour créer l’élément. Cela fonctionnera aussi bien sur les navigateurs
$(document).on('click', '#test', function (event) { var link = $("", { "download": "test.xls", "href": "data:application/vnd.ms-excel;utf-8,test" }); $("#test").append(link); link.get(0).click(); });
Violon