Я не знаю, чего вы пытаетесь достичь в своей последней строке, но это не похоже на dataURL, dataURL выглядит так:
данные: [] [; base64],
Теперь, как говорится, идея состоит в том, чтобы создать URL объекта с помощью комбинации Blob
и window.URL.createObjectURL
:
function dL(input,fileName){
var blob = new Blob(input,{type:"text/csv"}),
url = window.URL.createObjectURL(blob),
aElem = document.createElement("a"),
fileName = "deogenResults.txt";
aElem.setAttribute("href",url);
aElem.setAttribute("download",fileName);
if (window.navigator.constructor.prototype.hasOwnProperty("msSaveBlob")) {
window.navigator.msSaveBlob(blob,fileName);
} else if ("download" in aElem) {
aElem.click();
} else {
window.open(url,"_blank");
}
setTimeout(function(){window.URL.revokeObjectURL(url)},2000);
}
Используйте это так: dL(outputDiv.innerHTML,"someName")
Важно напомнить, что некоторые браузеры могут не разрешать щелчок для срабатывания на элементе, который НЕ в DOM, в этом случае вы можете добавить элемент a в тело, установите его невидимым, а затем удалите его внутри setTimeout.
Я написал это на простом ES5, вы можете соответственно адаптировать с помощью const
, Promise вместо setTimeout и т. Д.