当前位置:首页 > 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实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…