我正在开发一个网格,现在我正试图将信息从网格复制到Excel。一切都会按预期进行,但是如果数据太大,则复制过程将花费很长时间。
我正在使用textarea技巧,并带有“ document.execCommand(” copy“)”。
我可以看到我的问题在这里“ textarea.select();” 将文本粘贴到文本区域中的速度非常快,但是选择所有文本需要花费很长时间。之后,还可以快速发送到剪贴板。 问题似乎出在选择上。
我说的是复制数组[500000,40]。很多数据。
我已经尝试了一些Chrome API,但最终找不到任何好的解决方案。 还有其他将数据复制到剪贴板的聪明方法吗?
答案 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]);
希望这将解决您与复制大数据有关的问题。