这是代码:

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/

10-11 12:15