HTML5剪贴板API状态- CanIUse显示部分支持



CanIUse.com显示所有主流浏览器都至少部分支持剪贴板API,而FF则完全支持:https://caniuse.com/#feat=clipboard

然而,我找不到任何教程或简单的例子如何使用HTML5(无flash)写入剪贴板。

有谁知道部分支持到底是什么意思,这个功能可用吗?如果它只在Chrome/FF中工作,那将足以满足我的需求。

我最近对以下浏览器(最新版本)对W3C剪贴板API的支持进行了深入研究(截至撰写本文时仍处于工作草案阶段):

  1. Internet Explorer
  2. 谷歌Chrome
  3. Firefox

ChromeFirefox都支持W3C剪贴板API。您可以使用getDatasetData方法向剪贴板读写数据:https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent/clipboardData

可以设置不同MIME类型的数据(甚至是自定义的)。虽然与text/plaintext/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。

最新更新