当前位置:首页 > JavaScript

js实现复制 粘贴功能

2026-01-30 15:53:02JavaScript

使用 Clipboard API 实现复制粘贴

现代浏览器支持 Clipboard API,提供异步访问系统剪贴板的能力。以下是实现方法:

// 复制文本到剪贴板
async function copyText(text) {
  try {
    await navigator.clipboard.writeText(text);
    console.log('文本已复制到剪贴板');
  } catch (err) {
    console.error('复制失败:', err);
  }
}

// 从剪贴板读取文本
async function pasteText() {
  try {
    const text = await navigator.clipboard.readText();
    console.log('剪贴板内容:', text);
    return text;
  } catch (err) {
    console.error('读取剪贴板失败:', err);
  }
}

使用 document.execCommand 实现复制(兼容旧浏览器)

对于需要支持旧版浏览器的场景,可以使用已废弃但仍广泛支持的 execCommand 方法:

js实现复制 粘贴功能

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

  try {
    const successful = document.execCommand('copy');
    if (successful) {
      console.log('复制成功');
    }
  } catch (err) {
    console.error('复制失败:', err);
  }

  document.body.removeChild(textarea);
}

监听粘贴事件

处理用户粘贴操作可以通过监听 paste 事件:

js实现复制 粘贴功能

document.addEventListener('paste', (event) => {
  const pastedText = (event.clipboardData || window.clipboardData).getData('text');
  console.log('用户粘贴的内容:', pastedText);
  // 处理粘贴内容
});

安全注意事项

Clipboard API 受浏览器安全策略限制:

  • 需要 HTTPS 环境或 localhost
  • 可能要求用户先与页面交互(如点击按钮)
  • 读取剪贴板内容需要用户明确授权

完整示例代码

<button id="copyBtn">复制文本</button>
<button id="pasteBtn">粘贴文本</button>
<div id="output"></div>

<script>
  document.getElementById('copyBtn').addEventListener('click', async () => {
    await copyText('这是要复制的示例文本');
  });

  document.getElementById('pasteBtn').addEventListener('click', async () => {
    const text = await pasteText();
    document.getElementById('output').textContent = text || '无内容';
  });

  // 使用前面定义的 copyText 和 pasteText 函数
</script>

处理富文本内容

如需复制粘贴富文本内容(如HTML),可以使用以下方法:

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

标签: 功能js
分享给朋友:

相关文章

vue 实现收藏功能

vue 实现收藏功能

实现收藏功能的基本思路 在Vue中实现收藏功能通常涉及前端交互与后端数据存储的结合。核心逻辑包括:用户点击收藏按钮时切换状态,并通过API将状态同步到后端数据库。 前端组件实现 创建收藏按钮组件,使…

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获取 jQ…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

原生实现vue功能

原生实现vue功能

原生 JavaScript 实现 Vue 核心功能 使用原生 JavaScript 模拟 Vue 的核心功能(如数据绑定、虚拟 DOM、响应式更新等),可以通过以下方式实现: 数据响应式系统 通过…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

vue功能实现难点

vue功能实现难点

Vue 功能实现的常见难点 响应式系统深度监听 Vue 的响应式系统基于 Object.defineProperty(Vue 2)或 Proxy(Vue 3),但对嵌套对象或数组的深层属性变化需要额外…