当前位置:首页 > JavaScript

js实现复制到剪贴板

2026-02-28 18:17:14JavaScript

原生 JavaScript 实现复制到剪贴板

使用 document.execCommand 方法(兼容旧浏览器,但已逐渐被废弃)

function copyToClipboard(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(需要 HTTPS 环境或 localhost)

async function copyToClipboard(text) {
  try {
    await navigator.clipboard.writeText(text);
    console.log('复制成功');
  } catch (err) {
    console.error('复制失败:', err);
  }
}

处理权限问题

添加用户交互触发(如点击事件),避免浏览器拦截

button.addEventListener('click', async () => {
  try {
    await navigator.clipboard.writeText('要复制的文本');
    alert('复制成功');
  } catch {
    alert('请手动复制');
  }
});

兼容性处理方案

结合新旧 API 的降级方案

js实现复制到剪贴板

function copyToClipboard(text) {
  if (navigator.clipboard) {
    navigator.clipboard.writeText(text).catch(() => {
      fallbackCopy(text);
    });
  } else {
    fallbackCopy(text);
  }
}

function fallbackCopy(text) {
  const textarea = document.createElement('textarea');
  textarea.value = text;
  textarea.style.position = 'fixed';
  document.body.appendChild(textarea);
  textarea.select();

  try {
    document.execCommand('copy');
  } catch (err) {
    console.error('复制失败:', err);
  }

  document.body.removeChild(textarea);
}

注意事项

  • 现代 Clipboard API 需要安全上下文(HTTPS 或 localhost)
  • 某些浏览器可能要求复制操作必须由用户手势(如点击)触发
  • 移动端设备可能有不同的行为表现
  • 始终提供错误处理,考虑复制失败时的备选方案

标签: 剪贴板js
分享给朋友:

相关文章

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…