文字复制兼容性写法

1. 方案1:

if (navigator.clipboard && window.isSecureContext) {
  await navigator.clipboard.writeText(copyContent);
} else {
  // 兼容旧版浏览器
  const textarea = document.createElement("textarea");
  textarea.value = copyContent;
  document.body.appendChild(textarea);
  textarea.select();
  document.execCommand("copy");
  document.body.removeChild(textarea);
}

参考
Navigator: clipboard property - Web APIs | MDN
Document: execCommand() method - Web APIs | MDN

注意:文档中有说只能在安全上下文中(localhost、https)读取剪贴板,因此添加了 window.isSecureContext 条件判断。点此查看关于安全上下文说明

image

2. 方案2:

使用clipboard插件
①安装:npm install clipboard --save
②使用:

<button class="copy-btn">复制</button>
...
const copyContent = "复制的文字内容。。。";
const clipboard = new Clipboard(".copy-btn", {
  ext: () => copyContent,
});

clipboard.on("success", () => {
  ElMessage.success("复制成功");
  clipboard.destroy();
});

clipboard.on("error", () => {
  ElMessage.error("复制失败");
  clipboard.destroy();
});

③参考:

clipboard.js GitHub地址
clipboardjs官网地址

posted @ 2024-09-02 14:28  Li_pk  阅读(22)  评论(0)    收藏  举报