Clipboard
Clipboard
接口实现了 Clipboard API,如果用户授予了相应的权限,就能提供系统剪贴板的读写访问。在 Web 应用程序中,Clipboard API 可用于实现剪切、复制和粘贴功能。
系统剪贴板暴露于全局属性 Navigator.clipboard
之中。
如果用户没有适时使用 Permissions API 授予相应权限和"clipboard-read"
或 "clipboard-write"
权限,调用 Clipboard
对象的方法不会成功。
注意:实际上,现在浏览器对于访问剪贴板权限的索取各有不同,在章节 剪贴板可用性 查看更多细节。
所有剪贴板 API 方法都是异步的;它们返回一个 Promise
对象,在剪贴板访问完成后被执行。如果剪贴板访问被拒绝,promise 也会被拒绝。
方法
Clipboard
继承自 EventTarget
接口,因此拥有它的方法。
read()
- 从剪贴板读取数据(比如图片),返回一个
Promise
对象。When the data has been retrieved, the promise is resolved with aDataTransfer
object that provides the data。 readText()
- 从操作系统读取文本;returns a
Promise
which is resolved with aDOMString
containing the clipboard's text once it's available。 write()
- 写入任意数据至操作系统剪贴板。This asynchronous operation signals that it's finished by resolving the returned
Promise
。 writeText()
- 写入文本至操作系统剪贴板。returning a
Promise
which is resolved once the text is fully copied into the clipboard。
剪贴板可用性
异步剪贴板 API 是一个相对较新的 API,浏览器仍在逐渐实现它。由于潜在的安全问题和技术复杂性,大多数浏览器正在逐步集成这个 API。
例如,Firefox 不支持 "clipboard-read"
和 "clipboard-write"
权限,所以使用其他方式访问或改变剪贴板中的内容会受限。
对于浏览器扩展来说,你可以要求 clipboardRead 和 clipboardWrite 权限以使用 clipboard.readText() 和 clipboard.writeText()。但基于 HTTP 的网站中包含的脚本则不能获得剪贴板对象。参考 extensions in Firefox 63。
除此之外, read()
以及write()
是默认禁用且需要修改偏好设置来启用的。在使用之前请先确认浏览器兼容性表格。
规范
规范 | 状态 | 备注 |
---|---|---|
Clipboard API and events Clipboard |
Working Draft | Initial definition. |
浏览器兼容性
BCD tables only load in the browser