无需登录 数据私有 本地保存

剪贴板API调试器 - 在线复制粘贴权限测试

85
0
0
0

📋 剪贴板 API 调试器

Clipboard API 在线测试 · 权限检测 · 事件监听 · 兼容性诊断

检测中...
浏览器兼容性检测
API / 特性 状态 说明
navigator.clipboard-异步剪贴板 API 入口对象
writeText()-写入纯文本到剪贴板
readText()-从剪贴板读取纯文本
write() (ClipboardItem)-写入富文本/多格式内容
read() (ClipboardItem)-读取富文本/多格式内容
Permissions API (clipboard-read)-查询读权限状态
Permissions API (clipboard-write)-查询写权限状态
window.isSecureContext-安全上下文(HTTPS/localhost)
写入剪贴板 (Write)
快捷预设: 纯文本 含链接 表格数据 Emoji符号
读取剪贴板 (Read)
点击上方按钮读取剪贴板内容...
权限状态查询 (Permissions API)
clipboard-read: 查询中...
clipboard-write: 查询中...
剪贴板事件实时监听 (copy / paste / cut)
0
--:--:-- 等待剪贴板事件...(在此页面执行复制/粘贴/剪切操作即可看到日志)
提示:使用 Ctrl+C / Ctrl+V / Ctrl+X 或右键菜单触发事件
会话剪贴板操作记录
时间 操作 内容摘要 状态
暂无操作记录
常见问题 & 知识点 (FAQ)

Clipboard API(即 navigator.clipboard)是现代浏览器提供的异步剪贴板操作接口,支持 Promise,可以安全地读写剪贴板。相比旧的 document.execCommand('copy'),Clipboard API 支持更丰富的格式(如 HTML、图片),提供权限控制,并且不会阻塞主线程。execCommand 已被标记为废弃,不推荐继续使用。

剪贴板可能包含敏感信息(密码、银行卡号等),因此浏览器要求 Clipboard API 必须在安全上下文中运行。安全上下文包括:HTTPS 页面、localhost(本地开发)、127.0.0.1、以及通过 file:// 协议打开的页面(部分浏览器)。window.isSecureContext 可以检测当前环境是否安全。

使用 Permissions API
navigator.permissions.query({name: 'clipboard-read'}) 返回状态 'granted'(已授权)、'denied'(已拒绝)或 'prompt'(需用户确认)。
navigator.permissions.query({name: 'clipboard-write'}) 查询写入权限(通常默认 granted)。
注意:Firefox 不完全支持这两个权限名称的查询;Safari 的支持也在逐步完善中。读取剪贴板通常需要用户手势(如点击按钮)触发。

  • Chrome / Edge(Chromium):✅ 完整支持 writeText、readText、write、read,Permissions API 支持良好。
  • Firefox:✅ 支持 writeText 和 readText;write/read 支持有限;Permissions API 对 clipboard 权限名支持不完整。
  • Safari(macOS / iOS):✅ 支持 writeText 和 readText(需用户手势);write/read 支持较新版本;Permissions API 部分支持。
  • 移动端浏览器:大部分支持 writeText;readText 需要明确的用户交互触发,且页面需处于焦点。

writeText(text) 仅写入纯文本,简单快捷,适合大多数场景。
write([ClipboardItem]) 支持多格式(text/plain、text/html、image/png 等),可以同时提供纯文本和 HTML 版本,粘贴时目标应用会选择最合适的格式。例如,复制一段带格式的文本到 Word 或邮件中时,HTML 格式会被保留。

常见原因:
1. 非安全上下文:需要 HTTPS 或 localhost。
2. 权限被拒绝:用户拒绝了剪贴板读取权限。
3. 缺少用户手势:readText() 必须在用户交互(点击、按键等)的短时间窗口内调用。
4. 页面失去焦点:调用时页面需处于可见和焦点状态。
5. 浏览器不支持:旧版浏览器可能不支持该 API。

通过事件对象的 event.clipboardData
- copy 事件:使用 e.clipboardData.setData('text/plain', value) 来自定义复制内容;调用 e.preventDefault() 阻止默认行为。
- paste 事件:使用 e.clipboardData.getData('text/plain') 读取粘贴内容。
- cut 事件:类似 copy,可同时设置数据并让浏览器执行剪切。

可以。使用 navigator.clipboard.write() 配合 ClipboardItem,传入 'image/png' 类型的 Blob 即可将图片写入剪贴板。类似地,read() 可以读取剪贴板中的图片数据。不过图片剪贴板操作的内存消耗较大,且并非所有浏览器都完整支持。