CanIUse.com显示所有主流浏览器都至少部分支持剪贴板API,而FF则完全支持:https://caniuse.com/#feat=clipboard
然而,我找不到任何教程或简单的例子如何使用HTML5(无flash)写入剪贴板。
有谁知道部分支持到底是什么意思,这个功能可用吗?如果它只在Chrome/FF中工作,那将足以满足我的需求。
我最近对以下浏览器(最新版本)对W3C剪贴板API的支持进行了深入研究(截至撰写本文时仍处于工作草案阶段):
- Internet Explorer
- 谷歌Chrome Firefox
Chrome和Firefox都支持W3C剪贴板API。您可以使用getData
和setData
方法向剪贴板读写数据:https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent/clipboardData
可以设置不同MIME类型的数据(甚至是自定义的)。虽然与text/plain
和text/html
不同的任何内容在其他浏览器中都无法读取,但只有您设置数据的浏览器才能读取。
Edge支持W3C剪贴板API,限制您只能使用MIME类型text/plain
(或text
)写入数据。其他任何东西都会抛出异常。但是有一个hack使用一个可被满足的div,你可以用text/html
MIME类型写数据。
黑客可以在这里找到:https://stackoverflow.com/a/30905277/434742(在答案中寻找"更新:复制保持文本格式")
ie 不支持W3C剪贴板API。但是有一个自定义实现可用。但即使这样也有与Edge相同的限制,这意味着您只能使用MIME类型text/plain
(或text
)写入数据。但上述针对Edge的破解方法也适用于ie浏览器。此外,您还只能读取MIME类型为text/plain
(或text
)的数据。但是还有另一种方法,使用可满足内容的div,您也可以使用text/html
MIME类型读取数据。
黑客可以在这里找到:https://stackoverflow.com/a/6804718/434742(在答案中寻找"解决方案#2")
TL;DR:您可以在上述所有浏览器中复制和粘贴文本,包括格式化(HTML)。Edge需要一些变通方法,尤其是ie。