使用canvas.toBlob(callback, ...)
,我将几个大画布元素(2048x2048像素)转换为png。
但是,至少在Chrome中,并不总是调用回调。 Chrome Devtools中没有生成错误。
我的问题:
toBlob()
是否失败,除了 x 秒后超时?toBlob()
在哪些条件下失败?我如何知道哪些条件未得到满足?如何收到错误消息?我正在使用的代码:
function trigger_browser_download(blob, fileName) { "use strict";
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);
};
function download_canvas(canvas, filename) { "use strict";
canvas.toBlob(function(blob) {
debugger; // not always reached
if(blob instanceof Blob) {
trigger_browser_download(blob, filename);
} else {
console.error("error generating blob");
}
}, 'application/octet-binary');
}
for(var i = 0; i < 10; ++i) {
var canvas = document.createElement('canvas');
canvas.height = 2048;
canvas.width = 2048;
download_canvas(canvas, i + ".png");
}