7

有一种方法可以使用 Flash 欺骗网页上的“复制到剪贴板”功能......

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

因为甚至 adobe 都放弃了对 flash 的关注,而更多地关注 html5...

4

3 回答 3

4

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

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

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

于 2013-04-30T07:27:15.037 回答
4

目前没有办法浏览器(出于安全原因经常禁用)。在较旧的浏览器中没有此类功能(安全问题)或通常必须手动打开......但在较旧的浏览器中,使用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 */
});

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

引用“Firefox 方式”

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

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

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

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

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

于 2016-03-23T22:28:53.013 回答
-3

这是您可以在 IE 中执行此操作的一种方法...

<body>
  <textarea rows="5" cols="20" wrap="hard" onblur="CopyToClipboard(this)"></textarea>
</body>

<script language="JavaScript">
  function CopyToClipboard(text) {
    Copied = text.createTextRange();
    Copied.execCommand("Copy");
  }
</script>

于 2013-04-30T07:23:20.340 回答