diff --git a/package-lock.json b/package-lock.json index fc4a5322..0c974516 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "4.6.8", "license": "MIT", "dependencies": { + "file-saver": "^2.0.5", "jquery": "^3.3.1" }, "devDependencies": { @@ -3103,6 +3104,11 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -9192,6 +9198,11 @@ "flat-cache": "^3.0.4" } }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", diff --git a/package.json b/package.json index b0a44e71..eb72fbfe 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "vite-plugin-markdown": "^2.0.2" }, "dependencies": { + "file-saver": "^2.0.5", "jquery": "^3.3.1" } } diff --git a/src/scripts/borksy.js b/src/scripts/borksy.js index 31ef24fa..80de36ca 100644 --- a/src/scripts/borksy.js +++ b/src/scripts/borksy.js @@ -1,3 +1,4 @@ +import { saveAs } from 'file-saver'; import $ from 'jquery'; import { html as htmlChangelog } from '../../CHANGELOG.md'; import { htmlAbout, htmlFaqs, htmlHowto, htmlTips, htmlTools } from '../about'; @@ -8,7 +9,7 @@ const loadedFiles = {}; function loadFileFromPath(filename, pathToDir, doneCallback, failCallBack, filenameOverride) { const $ajax = $.ajax(pathToDir + filename); $ajax.done(() => { - loadedFiles[filenameOverride || filename] = escape($ajax.responseText); + loadedFiles[filenameOverride || filename] = $ajax.responseText; console.log(`Loaded ${filenameOverride || filename} via AJAX`); doneCallback?.($ajax.responseText, filenameOverride); }); @@ -31,16 +32,8 @@ function loadTemplates() { } function download(filename, text) { - const element = document.createElement('a'); - element.setAttribute('href', `data:text/plain;charset=utf-8,${encodeURIComponent(unescape(text))}`); - element.setAttribute('download', filename); - - element.style.display = 'none'; - document.body.appendChild(element); - - element.click(); - - document.body.removeChild(element); + console.log(text); + saveAs(new Blob([text], { type: 'text/html;charset=utf-8' }), filename); console.log(`File '${filename}' downloaded`); }