2

Salut!Le clic d'élément ne fonctionne pas dans Firefox et IE mais fonctionne dans Chrome

J'essaie de recevoir un fichier avec angularjs sans rechargement de page et avec la possibilité de définir dynamiquement un nom pour ce fichier.

Pour cela, j'utiliser le bloc de code suivant:

var filename = "my_filename.txt"; 
var element = angular.element('<a/>');  
element.attr({ 
    href: "service/download/", 
    target: '_blank', 
    download: filename 
}); 
element[0].click(); 

Ce code fonctionne parfaitement pour Google Chrome, alors qu'il ne fonctionne pas pour Firefox et Internet Explorer. Dans IE et FF rien ne se passe après le clic du bouton.

Pourriez-vous me diriger dans la bonne direction? Comment ce problème peut-il être étudié et corrigé?

  • Chrome version est 35.0.1916.153
  • Firefox version est 30,0
  • Internet Explorer version est 10.0.9200.16899

Merci!

+0

ne peut pas vous utiliser 'ng-click'? – Oliboy50

+0

@ Oliboy50, comment puis-je utiliser 'ng-click' dans mon cas? Pourriez-vous s'il vous plaît me donner un exemple? – sirdarpeace

Répondre

5

Essayez cette façon

var filename = "my_filename.txt"; 
var element = angular.element('<a/>');  
element.attr({ 
    href: "service/download/", 
    target: '_blank', 
    download: filename 
}); 
if (document.createEvent) { 
var ev = document.createEvent("MouseEvent"); 
    ev.initMouseEvent(
    "click", 
    true /* bubble */, true /* cancelable */, 
    window, null, 
    0, 0, 0, 0, /* coordinates */ 
    false, false, false, false, /* modifier keys */ 
    0 /*left*/, null 
); 
    element[0].dispatchEvent(ev); 
} 
else { 
    element[0].fireEvent("onclick"); 
} 
+0

** Salut @ Ste ** Merci pour votre réponse! Cela fonctionne pour Firefox maintenant mais ne fonctionne toujours pas pour Internet Explorer. J'ai fait une mise à jour complète donc je suis sûr que le nouveau code a été exécuté. – sirdarpeace

+0

Il semble que IE plus ancien a besoin de la méthode fireEvent. J'ai édité ma réponse en ajoutant un moyen alternatif pour IE. – Bolza

+0

Merci, mais cela ne fonctionne toujours pas pour Internet Explorer. Ma version d'Internet Explorer est 10.0.9200.16899. – sirdarpeace

Questions connexes