14-11-2016, 11:45 PM
(Modification du message : 14-11-2016, 11:55 PM par Sephi-Chan.)
Oui c'est la solution intermédiaire que j'évoquais. Avec un simple code Javascript (glané sur Stack Overflow) :
Mais c'est pas super agréable à utiliser (le fichier va directement dans le dossier de téléchargements) et un oubli est si vite arrivé (même si localstorage peut servir de garde fou).
Note que si j'opte pour cette solution pour la sauvegarde, je ne vais pas m'embêter avec XSL qui transforme du XML en HTML + Javascript : je fais directement le site en HTML + Javascript. Même en file:// je peux récupérer le contenu de mon fichier JSON en m'inspirant de JSONP :
function download(filename, content) {
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(content)));
pom.setAttribute('download', filename);
if (document.createEvent) {
var event = document.createEvent('MouseEvents');
event.initEvent('click', true, true);
pom.dispatchEvent(event);
}
else {
pom.click();
}
}
Code :
<button onclick="download('data.json', { foo: 'bar' });">Download</button>
Mais c'est pas super agréable à utiliser (le fichier va directement dans le dossier de téléchargements) et un oubli est si vite arrivé (même si localstorage peut servir de garde fou).
Note que si j'opte pour cette solution pour la sauvegarde, je ne vais pas m'embêter avec XSL qui transforme du XML en HTML + Javascript : je fais directement le site en HTML + Javascript. Même en file:// je peux récupérer le contenu de mon fichier JSON en m'inspirant de JSONP :
// Le contenu de data.js est de la forme : execute({ "foo": "bar" });
function fetchJSON() {
var script = document.createElement('script'),
body = document.getElementsByTagName('body')[0];
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', './data.js');
body.appendChild(script);
}
function execute(data) {
// "Démarre" l'application JS avec data.
}