Clipboard API - 提供了响应剪贴板命令以及异步读写剪贴板的功能
Clipboard API(剪贴板 API)提供了响应剪贴板命令(剪切,复制和粘贴)以及异步读写系统剪贴板的功能。对剪贴板内容的访问是通过 Permissions API 来控制的:当页面处于活动选项卡中时,将自动向页面授予 clipboard-write
权限。clipboard-read
权限必须主动请求,你可以通过尝试从剪贴板读取数据来实现。
注意: 此 API 在 Web 工作线程中不可用(未通过
WorkerNavigator
公开)。
该 API 被设计来取代使用 document.execCommand()
访问剪贴板。
访问剪贴板
你可以通过全局的 Navigator.clipboard
访问系统剪贴板,而不是通过实例化来创建一个 Clipboard
对象。
navigator.clipboard.readText().then(
clipText => document.querySelector(".editor").innerText += clipText);
该代码段从剪贴板中获取文本,并将其附加到 editor
类的第一个元素上。由于 readText()
(和 read()
)在剪贴板不是文本时返回一个空字符串,所以这段代码是安全的。
接口
Clipboard
安全上下文
提供用于在系统剪贴板中读取和写入文本和数据的接口。规范将此称为 “异步剪贴板 API”。
ClipboardEvent
安全上下文
表示提供剪贴板修改相关信息的事件,即 cut
、copy
和 paste
事件。规范将其称为 "剪贴板事件API"。
ClipboardItem
安全上下文
表示一种单项格式,在读取或写入数据时使用。
规范
规范 | 状态 | 备注 |
---|---|---|
Clipboard API and events | 工作草案 | Initial definition. |
Clipboard
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 66 | 79 | 63 | 不支持 | 53 | 13.1 |
read | 761 662 | 79 | 634 | 不支持 | 63 | 13.1 |
readText | 66 | 79 | 635 | 不支持 | 53 | 13.1 |
write | 661 | 79 | 636 | 不支持 | 63 | 13.1 |
writeText | 66 | 79 | 637 | 不支持 | 53 | 13.1 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 66 | 66 | 未知 | 63 | 未知 | 47 | 13.4 |
read | 843 662 | 843 662 | 未知 | 634 | 未知 | 54 | 13.4 |
readText | 66 | 66 | 未知 | 635 | 未知 | 47 | 13.4 |
write | 663 | 663 | 未知 | 636 | 未知 | 54 | 13.4 |
writeText | 66 | 66 | 未知 | 637 | 未知 | 47 | 13.4 |
1. 从版本 76 开始,支持 image/png
MIME 类型。
2. 不支持图像。
3. 从版本 84 开始,支持 image/png
MIME 类型。
4. 目前的工作原理与 readText()
相同;当前不支持非文本内容。
5. Firefox 仅支持使用 "clipboardRead"
扩展名权限来读取浏览器扩展中的剪贴板。
6. 当前的工作原理与 writeText()
完全相同,包括 Firefox 当前施加的可用性限制。
7. 在安全上下文和浏览器扩展中,未经许可就可以写入剪贴板,但只能从用户启动的事件回调中进行。具有 "clipboardWrite"
权限的浏览器扩展可以随时写入剪贴板。
ClipboardEvent
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 支持 | 12 | 22 | 4 | 支持 | 支持 |
ClipboardEvent() 构造函数 | 58 | ≤79 | 22 | 不支持 | 45 | 未知 |
clipboardData | 支持 | 12 | 22 | 5 | 支持 | 支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 支持 | 支持 | 未知 | 22 | 未知 | 支持 | 支持 |
ClipboardEvent() 构造函数 | 58 | 58 | 未知 | 22 | 未知 | 43 | 未知 |
clipboardData | 支持 | 支持 | 未知 | 22 | 未知 | 支持 | 支持 |
ClipboardItem
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 66 | ≤79 | 不支持 | 不支持 | 支持 | 不支持 |
ClipboardItem() 构造函数 | 66 | ≤79 | 不支持 | 不支持 | 支持 | 不支持 |
getType | 66 | ≤79 | 不支持 | 不支持 | 支持 | 不支持 |
types | 66 | ≤79 | 不支持 | 不支持 | 支持 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 66 | 66 | 未知 | 不支持 | 未知 | 支持 | 不支持 |
ClipboardItem() 构造函数 | 66 | 66 | 未知 | 不支持 | 未知 | 支持 | 不支持 |
getType | 66 | 66 | 未知 | 不支持 | 未知 | 支持 | 不支持 |
types | 66 | 66 | 未知 | 不支持 | 未知 | 支持 | 不支持 |