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

时间:2013-04-30 07:21:06

标签: javascript clipboard

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

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

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

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:3)

目前无法做到交叉 -browser(出于安全原因经常被禁用)。在旧版浏览器中没有这样的功能(安全问题)或经常必须手动启用...但在较旧的浏览器中,使用 Flash 进行此操作的可能性很高......

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

  

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

好消息! (更新2016-08)

所有当前主流桌面浏览器采用的复制/剪切!

兼容性表格(2016-08-10)(来源:Mozilla Dev

桌面

JavaScript copy execCommand compatibility table DESKTOP

移动

JavaScript copy execCommand compatibility table MOBILE 2017-03-05 (桌面和移动设备)边缘 - 基本支持&复制/剪切:,Chrome复制/剪切支持更改为43。

引用" Firefox方式"

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

  

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

这意味着,任何支持复制/剪切的浏览器都很有可能只对用户操作执行 例如:动态调用复制命令赢得了#39 ; t work,但是如果绑定到click事件,它就会起作用,即使事件没有被阻止(例如导航)(Chrome测试)。

以下是Google发表的一篇有趣文章,同时也介绍了Selection APIhttps://developers.google.com/web/updates/2015/04/cut-and-copy-commands

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

答案 2 :(得分:-2)

这是你可以在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>