我有一个包含巨大单元格值的表。这些值被截断为100个符号,以使表格轻量且快速。在单元格悬停时,我显示了一个CopyButton。 在CopyButton上单击我正在调用函数copyToClipboard并在那里传递单元格值。
在复制大于1MB的值时,浏览器冻结一分钟,最后我的剪贴板中的值不会改变。
const copyToClipboard = text => {
const textField = document.createElement('textarea')
textField.innerText = text
document.body.appendChild(textField)
textField.select()
document.execCommand('copy')
textField.remove()
}
是否有任何可以使用巨大值运行的剪贴板解决方案?
答案 0 :(得分:0)
我的解决方法:
如果值大于150k符号,我会将文件抛出到用户浏览器。请参阅downloadTextDocument
功能。
const downloadTextDocument = (documentValue, filename) => {
const blob = new File([documentValue], filename, { type: 'text/plain' })
const downloadUrl = window.URL.createObjectURL(blob);
download(downloadUrl, filename);
window.URL.revokeObjectURL(downloadUrl); // cleanup
}
const download = (url, filename) => {
const tempLink = document.createElement('a');
tempLink.href = url;
tempLink.setAttribute('download', filename)
document.body.appendChild(tempLink);
tempLink.click();
document.body.removeChild(tempLink);
}