当前位置:首页 > JavaScript

js 实现剪切板

2026-03-01 06:57:54JavaScript

使用 Clipboard API 实现复制和剪切

现代浏览器支持 Clipboard 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 copyTextToClipboard(text) {
  const textarea = document.createElement('textarea');
  textarea.value = text;
  document.body.appendChild(textarea);
  textarea.select();

  try {
    const successful = document.execCommand('copy');
    const msg = successful ? '成功' : '失败';
    console.log('复制操作' + msg);
  } catch (err) {
    console.error('无法复制文本: ', err);
  }

  document.body.removeChild(textarea);
}

实现剪切功能

剪切操作通常需要先复制再删除原内容。

async function cutToClipboard(elementId) {
  const element = document.getElementById(elementId);
  try {
    await navigator.clipboard.writeText(element.value || element.textContent);
    element.value = ''; // 清空输入框
    // 或对于内容可编辑元素
    // element.textContent = '';
    console.log('内容已剪切到剪贴板');
  } catch (err) {
    console.error('剪切操作失败: ', err);
  }
}

处理权限问题

Clipboard API 可能需要用户授权,特别是在读取剪贴板内容时。

js 实现剪切板

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

兼容性处理

为兼容不同浏览器,可以结合多种方法。

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

响应剪贴板变化

可以监听剪贴板内容变化。

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

注意:Clipboard API 要求页面通过 HTTPS 提供服务(localhost 除外),且某些操作可能需要用户交互(如点击事件)才能触发。

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

相关文章

js实现全选

js实现全选

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

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…