Chrome中的剪贴板API使用率无法按预期工作

时间:2018-04-24 06:13:53

标签: javascript google-chrome web clipboard clipboarddata

当我尝试对Chrome中的paste事件做出反应时,我有一种非常奇怪的行为,以便让用户将多个文件从文件系统粘贴到我的网络前端。

这是我注册到paste事件的函数的代码:

let pasteFunction = function(event, callback) {
    event.preventDefault();

    if (!event.originalEvent && !event) {
        return;
    }

    let regardedEvent = (event.originalEvent || event)
    let items = regardedEvent.clipboardData.items;

    if(items === undefined){
        return;
    };

    Array.prototype.forEach.call(regardedEvent.clipboardData.files, function(file) {
        callback(file);
    });
}

我没有迭代files属性,而是尝试了这个:

for (var i = 0; i < items.length; i++) {
    let content = items[i]
    if (content.kind !== 'file') continue;
    var blob = content.getAsFile();

    if (blob === null) {
        continue;
    }
    callback(blob);
}

这种方法存在多个问题:

  • 数组总是只包含一个文件,无论我复制了多少
  • 它不适用于图像以外的文件
  • 不保留文件名(始终为image.png

当我在Safari中尝试时,一切都像魅力一样。是否意味着Chrome的安全政策禁止我按预期使用剪贴板API?或者我能做点什么呢?

MacOS Sierra(10.12.6) - Chrome 65.0.3325.181

0 个答案:

没有答案