当前位置:首页 > JavaScript

js实现复制粘贴

2026-01-30 08:53:04JavaScript

使用 Clipboard API 实现复制粘贴

现代浏览器提供了 Clipboard API,允许开发者以安全的方式访问系统剪贴板。以下是具体实现方法:

复制文本到剪贴板

async function copyToClipboard(text) {
  try {
    await navigator.clipboard.writeText(text);
    console.log('Text copied to clipboard');
  } catch (err) {
    console.error('Failed to copy: ', err);
  }
}

从剪贴板读取文本

async function pasteFromClipboard() {
  try {
    const text = await navigator.clipboard.readText();
    console.log('Pasted content: ', text);
    return text;
  } catch (err) {
    console.error('Failed to read: ', err);
  }
}

使用 document.execCommand 方法(已废弃但广泛支持)

虽然 Clipboard API 是推荐方式,但旧版浏览器可能需要 fallback 方案:

js实现复制粘贴

复制文本

function fallbackCopyText(text) {
  const textarea = document.createElement('textarea');
  textarea.value = text;
  document.body.appendChild(textarea);
  textarea.select();

  try {
    const successful = document.execCommand('copy');
    if (!successful) throw new Error('Copy failed');
  } catch (err) {
    console.error('Fallback copy failed: ', err);
  }

  document.body.removeChild(textarea);
}

处理粘贴事件

监听粘贴事件并获取内容:

js实现复制粘贴

document.addEventListener('paste', (event) => {
  const clipboardData = event.clipboardData || window.clipboardData;
  const pastedText = clipboardData.getData('text');
  console.log('Pasted text:', pastedText);
});

安全注意事项

Clipboard API 需要用户授权:

  • 页面必须通过 HTTPS 提供服务(localhost 除外)
  • 某些浏览器可能要求这些操作必须由用户手势(如点击)触发
  • 读取剪贴板内容需要用户明确许可

兼容性处理建议

实现完整的复制粘贴功能应包含兼容性检查:

function copyText(text) {
  if (navigator.clipboard) {
    return navigator.clipboard.writeText(text);
  } else {
    return new Promise((resolve, reject) => {
      try {
        fallbackCopyText(text);
        resolve();
      } catch (e) {
        reject(e);
      }
    });
  }
}

扩展功能:复制富文本

Clipboard API 还支持复制 HTML 等富文本内容:

async function copyHTML(html) {
  const blob = new Blob([html], { type: 'text/html' });
  const clipboardItem = new ClipboardItem({ 'text/html': blob });
  await navigator.clipboard.write([clipboardItem]);
}

标签: js
分享给朋友:

相关文章

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…