当前位置:首页 > JavaScript

js实现剪切板

2026-01-30 15:56:48JavaScript

使用 Clipboard API 实现剪切板操作

Clipboard API 是现代浏览器提供的原生 API,支持读写剪切板内容,具有较好的兼容性和安全性。

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

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

使用 document.execCommand 方法(已废弃但仍有兼容性)

这种方法适用于需要兼容旧浏览器的场景,但已被标记为废弃。

js实现剪切板

function copyToClipboardFallback(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('复制失败');
    console.log('内容已复制到剪切板');
  } catch (err) {
    console.error('复制失败:', err);
  } finally {
    document.body.removeChild(textarea);
  }
}

处理权限问题

现代浏览器对剪切板访问有严格权限控制,可能需要用户授权。

js实现剪切板

// 检查剪切板读取权限
async function checkClipboardPermission() {
  const permissionStatus = await navigator.permissions.query({
    name: 'clipboard-read'
  });
  return permissionStatus.state; // 'granted', 'denied', or 'prompt'
}

监听剪切板变化

可以监听剪切板内容变化事件(需要浏览器支持)。

navigator.clipboard.addEventListener('clipboardchange', (event) => {
  console.log('剪切板内容已改变');
});

复制富文本内容

如需复制带格式的内容,可以使用 ClipboardItem 对象。

async function copyRichText(html) {
  const blob = new Blob([html], { type: 'text/html' });
  const clipboardItem = new ClipboardItem({ 'text/html': blob });

  try {
    await navigator.clipboard.write([clipboardItem]);
    console.log('富文本内容已复制');
  } catch (err) {
    console.error('复制富文本失败:', err);
  }
}

注意事项

  • 剪切板 API 只能在安全上下文(HTTPS 或 localhost)中使用
  • 某些浏览器可能限制页面加载后立即访问剪切板
  • 移动端浏览器可能有额外的限制
  • 考虑提供备用方案,如显示可手动复制的文本框

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

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…