自学内容网 自学内容网

前端js 复制文本到剪切板

在JavaScript中,你可以使用navigator.clipboard.writeText()方法将文字复制到剪切板。这个方法返回一个Promise,当复制操作完成时会resolve。

function copyTextToClipboard(text) {
  // 检查浏览器是否支持 Clipboard API
  if (navigator.clipboard && window.isSecureContext) {
    // 使用 Clipboard API 复制文本
    navigator.clipboard.writeText(text)
      .then(() => {
        console.log('文本已成功复制到剪贴板');
      })
      .catch(err => {
        console.error('无法复制文本: ', err);
      });
  } else {
    // 如果不支持 Clipboard API 或不是安全上下文(HTTPS),则回退到旧的方法
    fallbackCopyTextToClipboard(text);
  }
}

function fallbackCopyTextToClipboard(text) {
  // 创建一个“隐藏”的 input
  const textArea = document.createElement("textarea");
  textArea.value = text;

  // 将“隐藏”的 input 添加到文档中
  document.body.appendChild(textArea);

  // 选择并复制文本
  textArea.select();
  try {
    const successful = document.execCommand('copy');
    const msg = successful ? '成功' : '失败';
    console.log(`Fallback: 复制文本 ${msg}`);
  } catch (err) {
    console.error('Fallback: Oops, 无法执行命令', err);
  }

  // 移除“隐藏”的 input
  document.body.removeChild(textArea);
}

// 调用函数并传入想要复制的文本
copyTextToClipboard('你想要复制的文字内容');

请注意,navigator.clipboard.writeText() 方法需要在用户交互事件(如点击)的上下文中调用,而且通常只在 HTTPS 环境下可用,因为这是一个安全特性。如果你在非安全上下文中尝试使用它,可能会遇到问题或被浏览器阻止。

此外,document.execCommand('copy') 是一种较老的方式,用于在不支持现代 Clipboard API 的环境中提供向后兼容性。然而,execCommand 已经被标记为过时,应该尽可能使用 Clipboard API 替代。


该方法是AI查询的,经实际应用后好使


原文地址:https://blog.csdn.net/zbailing/article/details/145131506

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