如何在javascript中将数组复制到剪贴板

如何在javascript中将数组复制到剪贴板,javascript,Javascript,我有一个简单的函数,其中我尝试将数组传递到剪贴板,以便稍后粘贴到excel中 hiddenInputOnCopyHandler = ev => { ev.clipboardData.setData('text/plain', ev.currentTarget.value.split(',')); ev.preventDefault(); }; 但是我得到的是一个字符串,我想是因为setData中传递的类型是“text/plain” 但我找不到比这更好的了 现在

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

hiddenInputOnCopyHandler = ev => {    
    ev.clipboardData.setData('text/plain', ev.currentTarget.value.split(','));
    ev.preventDefault();
  };
但是我得到的是一个字符串,我想是因为setData中传递的类型是“text/plain” 但我找不到比这更好的了

现在的问题是,当它粘贴到excel中时,整个序列化数组将只占用一个单元格

您应该尝试使用tab
\t
而不是逗号
()

根据,您应该启动
copy
命令将所选内容复制到剪贴板。您还应该检查浏览器兼容性

另外
currentTarget.value
给出了未定义的值,因此您应该改用
textContent

单击段落时,它会在
copyAction
函数中触发
copy
命令,然后
eventListener
with
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

2020年7月10日,波恩市坦杜市mkjf,khgkg@kjk.od


检查我的解决方案并让我知道。

您希望剪贴板中的结果看起来像是数组元素集中在一起还是类似于[“a”、“b”、“c”]?是的,我希望它是类似于[“a”、“b”、“c”]的数组。您应该尝试使用tab
\t
而不是逗号
,()
ev.currentTarget.value.split(',')。join('\t')
谢谢@hgb123,请将您的评论改写为应答。我确实调用了document.execCommand('copy');但是它没有更新剪贴板内容,我不得不添加我在问题中提到的粘贴处理程序,以便在那里重新进行粘贴(最终成功)…@Bardelman从我的代码中可以看到,您应该单击
p
标记以复制内容。你可以随意修改,检查我的更新答案。
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);
<p id="CpToClip">
   HHHhhh,mkjf,Tendue,Bonne,10-07-2020,khgkg@kjk.od
</p>