Clipboard
Clipboard
接口实现了 Clipboard API,如果用户授予了相应的权限,其就能提供系统剪贴板的读写访问能力。在 Web 应用程序中,Clipboard API 可用于实现剪切、复制和粘贴功能。
系统剪贴板暴露于全局属性 Navigator.clipboard
之中。
如果用户没有适时使用 Permissions API 授予 "clipboard-read"
或 "clipboard-write"
权限,调用 Clipboard
对象的方法不会成功。
备注: 实际上,现在浏览器对于访问剪贴板权限的索取各有不同,在章节的 剪贴板可用性 部分查看更多细节。
所有 Clipboard API 的方法都是异步的;它们返回一个 Promise
对象,在剪贴板访问完成后被兑现。如果剪贴板访问被拒绝,promise 也会被拒绝。
方法
Clipboard
继承自 EventTarget
接口,因此拥有它的方法。
read()
-
从剪贴板读取数据(比如图片),返回一个
Promise
对象。在检索到数据后,promise 将兑现一个ClipboardItem
对象的数组来提供剪切板数据。 readText()
-
从操作系统读取文本;返回一个
Promise
,在从剪切板中检索到文本后,promise 将兑现一个包含剪切板文本数据的DOMString
。 write()
-
写入任意数据至操作系统剪贴板。这是一个异步操作,在操作完成后,返回的 promise 的将被兑现。
writeText()
-
写入文本至操作系统剪贴板。返回一个
Promise
,在文本被完全写入剪切板后,返回的 promise 将被兑现。
剪贴板可用性
异步剪贴板 API 是一个相对较新的 API,浏览器仍在逐步实现它。由于潜在的安全问题和技术复杂性,大多数浏览器都未完全实现这个 API。
例如,Firefox 不支持 "clipboard-read"
和 "clipboard-write"
权限,所以使用其他方式访问或改变剪贴板中的内容会受限。
对于浏览器扩展来说,你可以请求 clipboardRead 和 clipboardWrite 权限以使用 clipboard.readText() 和 clipboard.writeText()。但基于 HTTP 的网站中包含的脚本则不能访问剪贴板对象。参见 extensions in Firefox 63。
规范
Specification |
---|
Clipboard API and events # clipboard-interface |
浏览器兼容性
BCD tables only load in the browser