当前位置:首页 > JavaScript

js 实现复制

2026-02-28 21:31:34JavaScript

使用 document.execCommand

在较旧的浏览器中,可以通过 document.execCommand 方法实现复制功能。创建一个临时的 textareainput 元素,将需要复制的文本赋值给它,选中内容后执行复制命令。

js 实现复制

function copyText(text) {
  const textarea = document.createElement('textarea');
  textarea.value = text;
  document.body.appendChild(textarea);
  textarea.select();
  document.execCommand('copy');
  document.body.removeChild(textarea);
}

使用 Clipboard API

现代浏览器推荐使用 Clipboard API 的 writeText 方法实现复制功能。该方法返回一个 Promise,可以处理复制成功或失败的情况。

js 实现复制

function copyText(text) {
  navigator.clipboard.writeText(text)
    .then(() => {
      console.log('复制成功');
    })
    .catch(err => {
      console.error('复制失败:', err);
    });
}

结合兼容性检查

为了兼容新旧浏览器,可以结合两种方法,先检查 Clipboard API 是否可用,不可用时回退到 document.execCommand

function copyText(text) {
  if (navigator.clipboard) {
    navigator.clipboard.writeText(text)
      .then(() => {
        console.log('复制成功');
      })
      .catch(err => {
        console.error('复制失败,尝试回退方法:', err);
        fallbackCopyText(text);
      });
  } else {
    fallbackCopyText(text);
  }
}

function fallbackCopyText(text) {
  const textarea = document.createElement('textarea');
  textarea.value = text;
  document.body.appendChild(textarea);
  textarea.select();
  try {
    document.execCommand('copy');
    console.log('复制成功');
  } catch (err) {
    console.error('复制失败:', err);
  }
  document.body.removeChild(textarea);
}

复制特定元素内容

如果需要复制页面中某个元素的内容(如 divpre),可以通过获取元素的 textContentinnerText 实现。

function copyElementContent(elementId) {
  const element = document.getElementById(elementId);
  if (element) {
    copyText(element.textContent || element.innerText);
  }
}

注意事项

  • 使用 Clipboard API 时,需确保页面在安全上下文中运行(如 HTTPS 或 localhost)。
  • 某些浏览器可能要求复制操作由用户触发(如点击事件),否则会拒绝访问剪贴板。
  • 对于复杂的富文本内容,可以使用 Clipboard API 的 write 方法复制 HTML 或其他格式数据。

标签: js
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。…