Javascript:未捕获错误:下载的侦听器太多
Javascript: Uncaught Error: Too many listeners for downloads.onDeterminingFilename
这是代码:
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
侦听器:
确定文件名
在文件名确定过程中,扩展名将有机会覆盖目标 DownloadItem.filename。每个扩展不能为此事件注册多个侦听器。
源
相关文章:
- 加载侦听器上的函数触发得太早
- jQuery事件侦听器多次启动
- 如何处理多个事件侦听器
- 将多个事件侦听器添加到一个元素
- 在谷歌地图API v3和MarkerWithLabel上添加多个事件侦听器
- jQuery中的多个链式.on('click')事件侦听器
- Promise.all() - 在触发多个事件侦听器后执行某些操作
- 为多个元素组合 jQuery 事件侦听器
- 如何防止使用 jquery 和 socket.io 添加多个事件侦听器
- 如何从 JavaScript 中的多个元素中删除事件侦听器
- 连续触发多个 jQuery 事件侦听器
- 多个 document.createElement 在一个函数中返回事件侦听器
- 为什么这个事件侦听器在 javascript 中的数组中对多个键不起作用
- 何时应使用一个事件侦听器,何时应使用多个事件侦听器
- 将侦听器附加到多个子级
- 没有循环的多个事件侦听器
- HTML5 多画布事件侦听器 - 如何确定哪个画布经历了事件
- 将事件侦听器添加到多个元素(不包括一个元素)
- 多个函数点击添加事件侦听器
- Javascript:未捕获错误:下载的侦听器太多