当前位置:首页 > 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实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swip…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Paren…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…