自学内容网 自学内容网

JS 实现复制文本到剪切板(兼容不同环境)

本文同时解决了 navigator.clipboard.writeText 实现复制文本到剪切板 失效问题


基础实现:

js实现复制文本到剪切板我一开始的实现方法是这样的:

navigator.clipboard.writeText("要复制的文本");

在本地可以正常实现,但到测试环境等非安全域就失效了。因为navigator上并不存在clipboard属性

兼容版本:

// 复制
function copyToClipboard(textToCopy) {
  // navigator clipboard 需要在安全域(https等安全上下文)
  if (navigator.clipboard && window.isSecureContext) {
      // navigator clipboard 向剪贴板写文本
      return navigator.clipboard.writeText(textToCopy);
  } else {
      // 创建textarea
      let textArea = document.createElement("textarea");
      textArea.value = textToCopy;
      // 使textarea不在视图内
      textArea.style.position = "absolute";
      textArea.style.opacity = 0;
      textArea.style.left = "-999999px";
      textArea.style.top = "-999999px";
      document.body.appendChild(textArea);
      textArea.focus();
      textArea.select();
      return new Promise((res, rej) => {
          // 执行复制命令并移除文本框
          document.execCommand('copy') ? res() : rej();
          textArea.remove();
      });
  }
}

//调用方法
copyToClipboard("要复制的文本");


原文地址:https://blog.csdn.net/weixin_44646763/article/details/137829030

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!