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 安全上下文

表示提供剪贴板修改相关信息的事件,即 cutcopypaste 事件。规范将其称为 "剪贴板事件API"。

ClipboardItem 安全上下文

表示一种单项格式,在读取或写入数据时使用。

规范

规范 状态 备注
Clipboard API and events 工作草案 Initial definition.

Clipboard

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持667963 不支持5313.1
read

761

662

79634 不支持6313.1
readText6679635 不支持5313.1
write66179636 不支持6313.1
writeText6679637 不支持5313.1

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持6666 未知63 未知4713.4
read

843

662

843

662

未知634 未知5413.4
readText6666 未知635 未知4713.4
write663663 未知636 未知5413.4
writeText6666 未知637 未知4713.4

1. 从版本 76 开始,支持 image/png MIME 类型。

2. 不支持图像。

3. 从版本 84 开始,支持 image/png MIME 类型。

4. 目前的工作原理与 readText() 相同;当前不支持非文本内容。

5. Firefox 仅支持使用 "clipboardRead" 扩展名权限来读取浏览器扩展中的剪贴板。

6. 当前的工作原理与 writeText() 完全相同,包括 Firefox 当前施加的可用性限制。

7. 在安全上下文和浏览器扩展中,未经许可就可以写入剪贴板,但只能从用户启动的事件回调中进行。具有 "clipboardWrite" 权限的浏览器扩展可以随时写入剪贴板。

ClipboardEvent

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持 支持12224 支持 支持
ClipboardEvent() 构造函数58≤7922 不支持45 未知
clipboardData 支持12225 支持 支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持 支持 支持 未知22 未知 支持 支持
ClipboardEvent() 构造函数5858 未知22 未知43 未知
clipboardData 支持 支持 未知22 未知 支持 支持

ClipboardItem

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持66≤79 不支持 不支持 支持 不支持
ClipboardItem() 构造函数66≤79 不支持 不支持 支持 不支持
getType66≤79 不支持 不支持 支持 不支持
types66≤79 不支持 不支持 支持 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持6666 未知 不支持 未知 支持 不支持
ClipboardItem() 构造函数6666 未知 不支持 未知 支持 不支持
getType6666 未知 不支持 未知 支持 不支持
types6666 未知 不支持 未知 支持 不支持

相关链接