Est-il possible d'enregistrer une variable JavaScript comme fichier?

Existe-t-il un moyen de stocker la variable JavaScript dans un fichier (p. Ex. TXT, XML …), qui peut être téléchargé depuis le navigateur vers un PC?

Merci pour tout conseil.

Oui, vous pouvez faire quelque chose comme HTML5, en utilisant l'attribut de download

 var textToSave = 'this is a test'; var hiddenElement = document.createElement('a'); hiddenElement.href = 'data:attachment/text,' + encodeURI(textToSave); hiddenElement.target = '_blank'; hiddenElement.download = 'myFile.txt'; hiddenElement.click(); 

VIOLON

Vous pouvez utiliser une donnée: URI comme dans la réponse d'adeneo, mais une autre façon est d'utiliser un HTML5 Blob et createObjectURL (de même en utilisant l'attribut de téléchargement pour créer un lien de téléchargement).

Le bénéfice de l'utilisation de createObjectURL est qu'il existe des limites de taille sévères aux URI de données dans la plupart des navigateurs.

Exemple de code tiré de l'article lié:

 var typedArray = GetTheTypedArraySomehow(); var blob = new Blob([typedArray], {type: 'application/octet-binary'}); // pass a useful mime type here var url = URL.createObjectURL(blob); // url will be something like: blob:d3958f5c-0777-0845-9dcf-2cb28783acaf // now you can use the url in any context that regular URLs can be used // in, for example img.src, etc. 

Pour stocker une variable javascript, je vous suggère d'utiliser des bibliothèques de stockage de données comme celle-ci . Où vous pouvez définir une variable, l'obtenir, l'enlever …

 $.setData("key","value"); $.getData("key"); $.removeData("key"); 

Mais pour le stocker sur un fichier et rendre téléchargeable, vous devez passer par le serveur à moins d'utiliser une astuce javascript pour télécharger un fichier qui n'existe pas, il vous suffit de déclarer ces fonctions

  var Download = { click : function(node) { var ev = document.createEvent("MouseEvents"); ev.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null); return node.dispatchEvent(ev); }, encode : function(data) { return 'data:application/octet-stream;base64,' + btoa( data ); }, link : function(data, name){ var a = document.createElement('a'); a.download = name || self.location.pathname.slice(self.location.pathname.lastIndexOf('/')+1); a.href = data || self.location.href; return a; } }; Download.save = function(data, name) { this.click( this.link( this.encode( data ), name ) ); }; 

Et lorsque vous souhaitez télécharger un fichier, vous le faites

 Download.save("data to be on a file","FileName.txt"); 

Enfin, vous devez combiner le stockage de données et la solution de charge de fichier pour obtenir le résultat que vous demandez