Здесь вам нужно добавить атрибут download
к тегу привязки <a>
, а не саму кнопку нажатия. Вам нужно создать тег привязки с display:none
и программно щелкнуть по нему, чтобы загрузить файл. Вот пример. Обратите внимание, что кнопка используется только для выполнения функции, а атрибуты href
и download
добавляются в тег <a>
.
function exportHistory() {
console.log("started");
var _myArray = JSON.stringify(localStorage , null, 4); //indentation in json format, human readable
//Note: We use the anchor tag here instead button.
var vLink = document.getElementById('exportHistoryLink');
var vBlob = new Blob([_myArray], {type: "octet/stream"});
vName = 'working_history_' + todayDate() + '.json';
vUrl = window.URL.createObjectURL(vBlob);
console.log(vLink);
vLink.setAttribute('href', vUrl);
vLink.setAttribute('download', vName );
//Note: Programmatically click the link to download the file
vLink.click();
console.log("finished");
}
Теперь добавьте пустой тег привязки в DOM.
<button class="btn btn-outline-secondary btn-sm" id="exportHistory" onclick="exportHistory()">Export History</button >
<a id="exportHistoryLink" style="display: none;">Export</a>