这是代码:
assets.forEach(function(v) {
var canvas = document.createElement('canvas');
canvas.id = "canvas";
canvas.width = 200;
canvas.height = 150;
var ctx = canvas.getContext("2d");
var img = new Image();
img.src = 'file:///path/to/file/' + v.name;
img.onload = function () {
ctx.drawImage(img, 0, 0, img.width, img.height-256, 0, 0, 200, 150);
};
document.getElementById('download').addEventListener('click',
function() {
chrome.downloads.download({
url: canvas.toDataURL()
});
chrome.downloads.onDeterminingFilename.addListener(
function(downloadItem, cb) {
console.log(downloadItem);
cb({
filename: 'path/to/file/thumb-' + v.name.split('_')[0] + '.png',
conflictAction: 'overwrite'
});
return true;
}
);
},
false
);
});
如果文件夹中只有1个文件,则此方法有效。如果更多,则仅适用于单个文件。如何解决这个问题,使其适用于许多文件?
请注意,它将新的缩略图保存到初始图像所在的文件夹中。
最佳答案
您不能有多个onDeterminingFilename
侦听器:
onDeterminingFilename
在文件名确定过程中,扩展名将有机会覆盖目标DownloadItem.filename。每个扩展不能为此事件注册多个侦听器。
Source
关于javascript - Javascript:未捕获的错误:监听器太多,无法下载。onDeterminingFilename,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38404681/