js打开页面自动复制文本到剪贴板_前端Tips#7 - 用 6 行代码实现文本复制

本期详解推荐观看视频版:

前端Tips#7 - 用 6 行代码实现文本复制​mp.weixin.qq.com
1f94ea86a6bd1ec20ed8bda6821a82ea.png

【以下是文字版】

本期主要是讲一个 JS 技巧,用 6 行代码实现文本复制的功能。

代码片段

核心的代码片段就 6 行,利用动态创建 textarea,和 document.execCommand 命令就实现了:

const copyToClipboard = str => {
  const el = document.createElement('textarea');
  el.value = str;
  document.body.appendChild(el);
  el.select();
  document.execCommand('copy');
  document.body.removeChild(el);
};

替代方案

因为 document.execCommand 命令虽说还能使用,然而官方建议尽可能少用。官方比较推荐的还是 Navigator.clipboard API,当然该对象还在草案状态,IE、Safari 也还不支持,所以兼容性需要考虑。

使用 Clipboard_API 就很方便实现 复制粘贴 功能:

const copyToClipboard = async str => {
    ...
    // 写入粘贴板
    await navigator.clipboard.writeText(str)
    ...
    // 读取粘贴板
    await navigator.clipboard.readText()
};

注意事项

  • 因为浏览器安全限制,文本复制 功能必须由用户主动触发(比如放在点击事件里),而不能一进页面就自动触发
  • 建议这个代码片段只是用于 能力增强 部分,就算牺牲掉该功能也没多大关系。
  • 如果非要用于主功能里,建议使用成熟的 clipboard.js 开源库

参考文档

  • Copying text to clipboard with JavaScript:30 seconds of code
  • 视频版copy to the clipboard using JavaScript:使用 Clipboard_API
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值