有 input 或 textarea 标签时
<input type="text" value="复制我">
<button>点击复制</button>
<script>
const btn = document.querySelector('button');
btn.addEventListener('click', () => {
const input = document.querySelector('input');
input.select();
document.execCommand('copy');
alert('复制成功');
});
</script>
没有 input 或者 textarea 标签时
由于这个 api 只能操作可编辑区域,所以当没有 input 或者 textarea 标签时,我们可以先在document.body
中创建一个这样的标签,后面再移除。
<button>点击复制</button>
<script>
const btn = document.querySelector('button');
btn.addEventListener('click', () => {
const ipt = document.createElement('input');
document.body.appendChild(ipt);
ipt.setAttribute('value', '听说你想复制我');
ipt.select();
document.execCommand('copy');
alert(ipt.value);
document.body.removeChild(ipt);
});
</script>