js如何实现选中多个dom中的文本并一起复制到剪贴板?

参考了之前有大佬提出的类似问题:https://segmentfault.com/q/10...
结果发现如果是多个元素,那么只会保留最后一个元素中的文本。
我的想法是先逐个选中要复制的文本,最后一起复制,但是并没有成功。
用的谷歌浏览器。

失败的代码如下:
for (let i = 0; i < $("input:checked").parent().next().children().length; i++) {
var text = $("input:checked").parent().next().children()[i]
var selection = window.getSelection()
var range = document.createRange()
range.selectNodeContents(text)
selection.removeAllRanges() // 不明白这里的意思,如果删掉这一句直接就不会复制了。但是不删的话 感觉每次都会清空,无法实现复制多行。
selection.addRange(range)
}
document.execCommand('Copy','false',null)

需求:复制所有符合条件的元素的文本到剪贴板,保留格式(换行)
如果有其他能够实现该需求的方法也麻烦赐教了
感谢!

阅读 4.8k
2 个回答

你要用原生的代码的话,可以直接访问 clipboard。这种思路很简单,直接监听 copy 事件,直接添加你想复制的内容即可。

https://segmentfault.com/a/11...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题