Execcommand ("SaveAs", null, "file.csv") ne fonctionne pas dans IE8

var doc = w.document; doc.open('application/CSV','replace'); doc.charset = "utf-8"; doc.write("all,hello"); doc.close(); if(doc.execCommand("SaveAs",null,"file.csv")) { window.alert("saved "); }else { window.alert("cannot be saved"); } 

Ne fonctionne pas dans IE 8

Mais woks dans IE 6

quel est le problème ? Il est alerté "ne peut pas être sauvegardé"

Aidez moi !!! Avance merci

Le problème semble être causé par un ancien bogue qui a été corrigé dans Windows XP mais n'est apparemment pas dans mon Windows 7. À partir de http://support.microsoft.com/kb/929863 :

Ce problème se produit en raison d'une limitation de la fonction ExecCommand . Lorsque vous exécutez le script qui utilise la fonction ExecCommand avec la commande SaveAs , le script ne peut sauvegarder qu'un fichier qui est le type de fichier texte.

Effectivement, modifiez l'extension de fichier sur ".txt" et regardez-le magiquement dans IE8.

La seule solution de rechange qui vient à l'esprit est d'avoir une langue côté serveur créer le fichier CSV, et le servir comme téléchargement (en utilisant l'en Content-disposition: attachment tête Content-disposition: attachment ).

Je sais que c'est un fil très ancien, mais j'ai également fait face à ce problème. Vous pouvez le réparer en ajoutant la valeur suivante (selon l'extension du fichier téléchargé) dans votre registre.

Par exemple pour le fichier .csv:

 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.csv] "PerceivedType"="document" 

@MICROSOFT: dommage sur vous; Le problème semble être toujours non corrigé 🙂

Si vous pouviez faire ce côté du serveur de traitement avec PHP ou .NET ou Java ou quelque chose, dans les en-têtes HTTP définis:

 Content-Disposition: attachment; filename=file.csv 

Ce qui, malheureusement, vous ne pouvez pas le faire à partir de JavaScript.