展示邀请码、卡号、命令行片段时,配一个复制按钮能省掉手动全选的麻烦。现代浏览器提供了 Clipboard API,几行代码即可完成。

实现步骤
第一步,给目标 div 加一个 id,例如 id=”code-box”,把需要复制的文本放在里面。
第二步,写一个按钮,点击时读取 div 的文本内容:
const text = document.getElementById('code-box').innerText;
navigator.clipboard.writeText(text).then(() => {
btn.textContent = '已复制';
});
第三步,处理失败分支。Clipboard API 返回 Promise,权限被拒或不支持时会 reject,用 catch 给出提示。
三个注意点
其一,navigator.clipboard 只在安全上下文可用,即 https 或 localhost。普通 http 站点会拿到 undefined,需要降级方案。
其二,innerText 与 textContent 有区别。innerText 保留可见换行,textContent 会带上隐藏元素的文本,复制可见内容时用 innerText 更符合预期。
其三,旧方案 document.execCommand(‘copy’) 已被标记废弃,需要先创建临时 textarea 再选中复制,仅在不支持 Clipboard API 的环境里作为兜底。
按钮文案建议在复制成功后短暂变为「已复制」,一到两秒后还原,形成明确的操作反馈。
