在 Javascript 中使用 document.execCommand 方法可以将目标文字复制到剪切板中。

复制输入域的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
<input id="demoInput" value="hello world">
<button id="btn">点我复制</button><br/>
<script>
const btn = document.querySelector('#btn');
btn.addEventListener('click', () => {
const input = document.querySelector('#demoInput');
input.select();
if (document.execCommand('copy')) {
document.execCommand('copy');
console.log('复制成功');
}
})
</script>

试一试

其他 element 复制

document.execCommand 只能复制输入域的内容,如 input textarea,而其他的 element 内容复制,只能通过借用 input 的方式来完成。

将想要复制的内容添加到一个隐藏的 input 中,再次进行上面的步骤即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div id="div" style="border-style: solid;">这次是 div 的内容</div>
<button id="btn1">点我复制</button>
<script>
const btn1 = document.querySelector('#btn1');
btn1.addEventListener('click', () => {
const input = document.createElement('input');
const div = document.querySelector('#div');
input.setAttribute('readonly', 'readonly');
input.setAttribute('value', `${div.innerHTML}`);
document.body.appendChild(input);
input.select();
// input.setSelectionRange(0, input.value.length);
if (document.execCommand('copy')) {
document.execCommand('copy');
console.log('复制成功');
}
document.body.removeChild(input);
})
</script>

试一试

03-16 13:52