В документации API Chart.js есть встроенная функция .toBase64Image (), которую вы, возможно, захотите использовать вместо этого, поскольку вы указали расширение файла как .png.
Как уже говорилось Бекки, в Firefox для загрузки файла необходимо использовать link.click () . Однако элемент, который мы создали ( link ), необходимо добавить в тело вашего HTML-документа, чтобы link.click () работал должным образом. Важно, чтобы после выполнения этого оператора удалил элемент ссылки из вашего HTML-документа, чтобы ваше HTML-тело не накапливало эти элементы каждый раз, когда вы пытаетесь загрузить диаграмму. IE требует, чтобы холст сохранялся по-другому с помощью функций BLOB-объектов.
let canvas = document.getElementById('canvasId');
let chart_name = = new Chart(canvas, config);
var isIE = !!navigator.userAgent.match(/Trident/g) || !!navigator.userAgent.match(/MSIE/g);
if (!isIE) {
// Create a hyperlink element.
let link = document.createElement('a');
// Set image URL and filename.
link.href = chart_name.toBase64Image();
link.download = 'IMAGE.png';
// If browser is Firefox, the element we created above must be appended to the
// body of the HTML document & therefore removed after.
if (navigator.userAgent.match(/Firefox/g)) {
document.body.append(link);
link.click();
document.body.removeChild(link);
}
}
if (isIE) {
var blob = canvas.msToBlob();
window.navigator.msSaveBlob(blob, 'IMAGE.png');
}