在JavaScript中复制/粘贴?

时间:2009-12-23 09:53:41

标签: cross-browser copy clipboard paste

我知道这个问题现在被问到了一百万次,但我找不到一个好的最新解决方案。

我已经实现了自己的菜单,为用户提供了剪切,复制和粘贴到我的WebApp的功能。 但我不确定如何在Firefox,IE,Safari / Chrome上使用剪贴板。

感谢您的帮助。

2 个答案:

答案 0 :(得分:7)

我刚刚在这个主题上写了详细的技术blog post(我为Lucidchart工作,我们最近在剪贴板上进行了大修)。帖子中包含this fiddle,这是通过Javascript复制和粘贴的工作示例。

好消息是,只要用户使用剪贴板热键,此示例就会为您提供设置/获取任何支持的剪贴板数据类型的代码。

坏消息是使用您自己的上下文菜单进行复制和粘贴是有问题的。即便谷歌也无法解决这个问题(尝试在Firefox中使用上下文菜单复制或粘贴在Google文档中)。在IE中你可以毫不费力地使用它。这是因为您可以随时通过Javascript访问clipboardData对象:

window.clipboardData

(当您尝试在系统剪切,复制或粘贴事件之外执行此操作时,IE将提示用户授予Web应用程序剪贴板权限。)

在Chrome中,您可以创建一个Chrome扩展程序,该扩展程序将为您的网络应用程序clipboard permissions(这就是我们为Lucidchart所做的)。然后,对于安装了扩展程序的用户,您只需在单击菜单选项时自行触发系统事件:

document.execCommand('copy');

看起来Firefox有some options允许用户授予某些网站访问剪贴板的权限,但我没有亲自尝试过这些。

答案 1 :(得分:1)

你尝试过: http://ericphan.info/development/cross-browser-copy-and-paste-with-jquery-copy/

更新: 该链接不可用,因此我从缓存中复制内容:

情景

当客户端在Web应用程序中报告错误时,我正在为SSW开发客户端项目。

该错误涉及动态生成的mailto链接,当您选择多个员工时,该链接已更新。当客户选择超过10名员工发送电子邮件时,客户报告错误。他的Lotus Notes邮件客户端弹出一个错误说:

处理命令行参数时出错

我自己测试一下,我发现在mailto链接停止工作之前,Outlook 2007可以轻松支持30-40名员工的电子邮件。 原因

事实证明,mailto规范有一个限制,邮件客户端也有限制。 Lotus Notes仅处理mailto链接中的240个字符,而其他现代邮件客户端(如Outlook 2007)支持2083个字符 - URL的最大长度

这解释了测试中的差异。 修复 - JQuery救援

由于这是HTML规范的限制,我们需要另一种解决方案来满足客户的要求“我希望能够选择多名员工并向所有员工发送电子邮件”

我们本可以创建一个使用SMTP发送电子邮件的电子邮件表单 - 但客户希望使用Lotus Notes作为他的邮件客户端。

我们最终更改了“电子邮件”按钮,将所有电子邮件(逗号分隔)复制到剪贴板上,然后弹出一个新的电子邮件窗口。客户端所要做的就是点击CTRL + V并将电子邮件粘贴到TO字段中。这是最快,最具成本效益的解决方案,使客户可以灵活地使用自己的电子邮件客户端。

有一个名为jquery.copy的JQuery插件,它通过使用flash(swf)文件提供跨浏览器复制和粘贴。这类似于我博客上的语法高亮显示器的工作方式。

一旦引用了jquery.copy.js文件,您只需执行以下操作即可将数据推送到剪贴板:

$.copy("some text to copy");

很好,很容易;)

注意:您可能需要更改jquery.copy.js中SWF文件的路径才能使其生效