首页 > 解决方案 > 如何在javascript中将数组复制到剪贴板

问题描述

我有这个简单的功能,我尝试将数组传递到剪贴板,以便稍后粘贴到 excel 中

hiddenInputOnCopyHandler = ev => {    
    ev.clipboardData.setData('text/plain', ev.currentTarget.value.split(','));
    ev.preventDefault();
  };

但我得到的是一个字符串,我猜是因为 setData 中传递的类型是“文本/纯文本”,但我在它的文档中找不到更好的

现在的问题是,当它粘贴到 excel 中时,整个序列化数组将只占用一个单元格 在此处输入图像描述

标签: javascript

解决方案


根据文档,您应该触发copy命令将选择复制到剪贴板。您还应该检查浏览器的兼容性。

currentTarget.value给出了 undefined 所以你应该使用它textContent

当您单击段落时,它会触发函数中的copy命令copyAction,然后eventListener使用copy事件执行该hiddenInputonCopyHandler函数。

function init(){

   let el = document.getElementById("CpToClip");
    el.addEventListener('click',copyAction);
    
    el.addEventListener('copy', hiddenInputOnCopyHandler);
    
}

function copyAction(){
   document.execCommand('copy');  
}

hiddenInputOnCopyHandler = ev => {
    let copiedVal = ev.currentTarget.textContent.trim().split(',').join('\t');
    
    console.log(copiedVal);// "HHHhhh" "mkjf" "Tendue" "Bonne" "10-07-2020" "khgkg@kjk.od"    
    
    ev.clipboardData.setData('text/plain', copiedVal);
    ev.preventDefault();
}


addEventListener('load',init);

html

<p id="CpToClip">
   HHHhhh,mkjf,Tendue,Bonne,10-07-2020,khgkg@kjk.od
</p>

检查我的解决方案并告诉我。


推荐阅读