GitHub 链接:https://github.com/zenorocha/clipboard.js
推荐阅读:《Cut and Copy Commands》
推荐阅读博客:《clipboard.js 核心代码解析》
一、核心概念原理
复制/剪切操作的实现,是去模拟键盘的「Ctrl+C」和「Ctrl+X」
document.execCommand('copy') // 复制document.execCommand('cut') // 剪切
我们平时做复制/剪切操作,先要提前选择一段文本才行,同样地,这里使用代码来模拟这种操作
let textNode = document.querySelector('.target') // 获取要复制目标节点let range = document.createRange()range.selectNode(textNode) // 创建一个范围window.getSelection().addRange(range) // 选中要复制的内容document.execCommand('copy') // 复制window.getSelection().removeAllRanges() // 取消选中
整体思路就是:用代码选中一段文本,做复制/剪切操作,然后再取消选中
注意:对于 input 和 textarea 元素,可以进行剪切操作,其他类型元素只能复制
二、简单使用
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width"><title>JS Bin</title></head><body><div id="target">test1</div><button class="button" data-clipboard-target="#target">点击我复制target</button></body></html>
let button = document.querySelector('.button')button.onclick = (e)=>{let targetNode = document.querySelector(e.target.dataset.clipboardTarget)let range = document.createRange()range.selectNode(targetNode)window.getSelection().addRange(range)document.execCommand('copy')window.getSelection().removeAllRanges()}
「@浪里淘沙的小法师」
