在PURE javascript中复制到剪贴板的方法?

jav*_*web 7 javascript clipboard

有一种方法可以使用flash在网页上欺骗"复制到剪贴板"功能...

但有没有办法以纯粹的 JavaScript方式(但仍然是跨现代浏览器)?

因为即使adobe也把注意力放在flash上​​,同时更多地关注html5 ......

jav*_*web 7

目前还没有办法做到浏览器(通常出于安全原因被禁用)。在较旧的浏览器中,没有此类功能(安全问题),或者通常必须手动打开...但在较旧的浏览器中,很有可能使用Flash来执行此操作...

更新 2016
仍然不是移动跨浏览器,但在主要浏览器的新桌面版本中受支持... Mozilla 开发人员文档现在对Document.execCommand()特别是“复制”命令
有了更好的描述:

将当前选择复制到剪贴板。启用此行为的条件因浏览器而异,并且 随着时间的推移而演变检查兼容性表以确定您是否可以在您的情况下使用它。

2016-08 更新:当前所有主要桌面浏览器都采用复制/剪切!

2021 年更新 => 更改为Clipboard API

document.execCommand()被标记为已过时,但是,
它应该被取代Clipboard API
如果您出于某种原因需要支持 IE9+,则将来需要同时实现这两者。

剪贴板 API 的 MDN:

此 API 旨在取代使用 document.execCommand() 访问剪贴板。

请注意,它仍在开发中,并且有一些实现细节 - 请参阅 MDN 链接以获取兼容性表中的更多信息

来自 MDN Clipboard.writeText() 的示例

navigator.clipboard.writeText("<empty clipboard>").then(function() {
  /* clipboard successfully set */
}, function() {
  /* clipboard write failed */
});
Run Code Online (Sandbox Code Playgroud)

MDN 兼容性表:截至 2021-04-30 在此输入图像描述

引用“Firefox 方式”

将来有可能在其他浏览器中以同样的方式完成此操作:

在 Firefox 41 之前,需要在 user.js 首选项文件中启用剪贴板功能。有关详细信息,请参阅 Mozilla 首选项简要指南。如果该命令不受支持或启用,则 execCommand 将引发异常而不是返回 false。
在 Firefox 41 及更高版本中,默认情况下,在任何能够弹出窗口(半可信脚本)的事件处理程序中启用剪贴板功能。

这意味着,任何支持复制/剪切的浏览器很可能只会在用户操作时执行此操作。例如:即时调用复制命令不起作用,但是如果绑定到单击事件,即使事件未被阻止(例如导航)(Chrome 测试),它也可以工作。

这里有一些来自 Google 的有趣文章,还描述了Selection APIhttps://developers.google.com/web/updates/2015/04/cut-and-copy-commands

顺便说一句:当然,您可以预先选择文本并要求用户单击CTRL+ C,但您会失去用户体验。


Zah*_*med 5

出于安全原因,大多数浏览器不允许修改剪贴板(IE除外).

使复制到剪贴板功能跨浏览器兼容的唯一方法是使用Flash.

现在,您可以选择要复制的所有数据,并要求用户单击CTRL+ C.