JavaScript-将巨大的字符串复制到剪贴板

时间:2018-10-12 19:12:38

标签: javascript html arrays grid clipboard

我正在开发一个网格,现在我正试图将信息从网格复制到Excel。一切都会按预期进行,但是如果数据太大,则复制过程将花费很长时间。

我正在使用textarea技巧,并带有“ document.execCommand(” copy“)”。

我可以看到我的问题在这里“ textarea.select();” 将文本粘贴到文本区域中的速度非常快,但是选择所有文本需要花费很长时间。之后,还可以快速发送到剪贴板。 问题似乎出在选择上。

我说的是复制数组[500000,40]。很多数据。

我已经尝试了一些Chrome API,但最终找不到任何好的解决方案。 还有其他将数据复制到剪贴板的聪明方法吗?

1 个答案:

答案 0 :(得分:0)

问题在于数据处理所花费的时间比execCommand("copy")长。

实际上,需要在用户生成的事件中调用复制,并且复制上附加了时间限制(没有提及任何地方,但是根据我的工作,我发现复制时间约为5秒,欢迎对此进行任何说明)。如果您的数据处理需要更多的数据,它将不会复制数据。一种解决方案是提前处理数据,然后打开对话框/弹出窗口,要求用户单击按钮以复制数据。

进一步进行快速复制(在野生动物园中不起作用),您可以使用以下方法:

var contentToCopy;
function copyDataToClipboard(e) {
    e.preventDefault(); // default behaviour is to copy any selected text
    e.clipboardData.setData("text/plain", contentToCopy);
}
function copy(content) {
    contentToCopy = content;
    document.addEventListener("copy", copyDataToClipboard);
    try {
        document.execCommand("copy");
    } catch (exception) {
        console.error("Copy to clipboard failed");
    } finally {
        document.removeEventListener("copy", copyDataToClipboard);
    }
}

copy(content = [Any content you would like to copy to clipboard]);

希望这将解决您与复制大数据有关的问题。