js实现复制
使用document.execCommand方法(传统方式)
通过创建临时textarea元素,设置需复制的文本内容,选中后执行execCommand('copy')。此方法兼容较老浏览器,但已逐渐被新API取代。

function copyText(text) {
const textarea = document.createElement('textarea');
textarea.value = text;
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
document.body.removeChild(textarea);
}
使用Clipboard API(现代推荐)
通过navigator.clipboard.writeText()实现,需注意权限问题(需用户交互触发)。返回Promise,可处理成功/失败状态。

async function copyText(text) {
try {
await navigator.clipboard.writeText(text);
console.log('复制成功');
} catch (err) {
console.error('复制失败:', err);
}
}
兼容性处理
结合两种方法,优先尝试Clipboard API,失败时降级到execCommand:
async function copyText(text) {
if (navigator.clipboard) {
try {
await navigator.clipboard.writeText(text);
return;
} catch (err) {}
}
const textarea = document.createElement('textarea');
textarea.value = text;
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
document.body.removeChild(textarea);
}
注意事项
- 用户交互触发:浏览器通常要求复制操作由点击等用户行为直接触发。
- HTTPS限制:Clipboard API部分功能仅限安全上下文(HTTPS或localhost)。
- 错误处理:捕获权限拒绝或API不可用情况。






