在后台管理系统的展示JSON
数据的时候用到了React-JSON-View这个组件,同事在使用其复制功能时反馈到每次复制字符串都会带上"
,这很讨厌让我处理下。此为背景。
原以为组件会提供配置项来控制复制的值,但事实并没有……
我看了下他的源码,他自己在CopyToClipboard.js
中实现的(clipboard.js也是这种实现):
1 | const container = document.createElement('textarea'); |
他通过JSON.stringify
转换的值(所以字符串多了”),既然他们没有提供配置项,那我就只能监听copy
事件了:
1 | document.addEventListener('copy', event => { |
这里解释一下event.srcElement.innerHTML
:
因为copy命令产生的ClipboardEvent事件,clipboardData数据为空:
1 | clipboardData: DataTransfer |
当我们调用了event.clipboardData.setData('text/plain', text)
, 再看数据:
1 | dropEffect: "none" |
这时剪切板中的数据就是我们修改后的数据了。
目前有新的方法navigator.clipboard
来对剪切板进行操作,不过现阶段兼容性和限制较多,暂时了解下就好了。目前这块使用频率较低,就暂时未做更深的了解。
参考