火次果
火次果

暂无菜单项

首页/文章/技术文章/web前端/HTML5/
打开 MD 链接

div 里的文本怎么一键复制

发布于 4天前
1

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

屏幕上的一段代码与按钮
复制按钮常与代码片段搭配出现。图片来自 Pexels。

实现步骤

第一步,给目标 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 的环境里作为兜底。

按钮文案建议在复制成功后短暂变为「已复制」,一到两秒后还原,形成明确的操作反馈。

常见问题(FAQ)

Clipboard API 在 http 页面能用吗
不能。navigator.clipboard 要求安全上下文,仅 https 与 localhost 可用,http 环境需要 textarea 加 execCommand 的降级方案。
innerText 和 textContent 复制效果有何不同
innerText 只取可见文本并保留渲染后的换行,textContent 连隐藏节点的文本一起取出,复制可见内容应选 innerText。
复制按钮需要用户授权吗
写入剪贴板由用户点击触发时一般直接放行,读取剪贴板才需要明确授权,复制场景通常不会弹权限框。
execCommand 方案还能用吗
该 API 已废弃但浏览器仍兼容,做法是创建临时 textarea 写入文本、选中、执行 copy,再移除节点,仅作旧环境兜底。
复制富文本格式怎么做
用 ClipboardItem 写入 text/html 类型数据,可把带标签的片段放进剪贴板,粘贴到富文本编辑器时保留格式。
clipboard APIDOM操作剪贴板复制功能文本选择
支持作者
如果这篇内容对你有帮助,可以请作者喝杯咖啡
0 点赞
0 收藏
分享
0 讨论
反馈
0 / 600
细中粗
0 讨论
热门最新
总结
暂无总结
嗨,下午好!
所有的成功,都源自一个勇敢的开始
创作
社区
购物
会员
近期热门

暂无数据

火次果
火次果
首页
资迅中心
小店
AI导航
社区
所有的成功,都源自一个勇敢的开始
不辜负每一个勇敢的开始
关于FAQ协议
火次果 © 2026鲁ICP备2025164830号-1