在JavaScript中复制/粘贴?

the*_*edp 6 clipboard copy cross-browser paste

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

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

谢谢您的帮助.

Ric*_*rtz 7

我刚刚写了一篇关于这个主题的详细技术博客文章(我为Lucidchart工作,我们最近在剪贴板上进行了大修).帖子中包含的是这个小提琴,它是通过Javascript复制和粘贴的工作示例.

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

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

window.clipboardData
Run Code Online (Sandbox Code Playgroud)

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

在Chrome中,您可以创建一个Chrome扩展程序,它将为您的网络应用程序剪贴板授予权限(这就是我们为Lucidchart所做的工作).然后,对于安装了扩展程序的用户,您只需在单击菜单选项时自行触发系统事件:

document.execCommand('copy');
Run Code Online (Sandbox Code Playgroud)

看起来Firefox有一些选项允许用户授予某些站点访问剪贴板的权限,但我没有亲自尝试过这些.


Hai*_*vgi 1

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

\n\n

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

\n\n

场景

\n\n

当我正在为 SSW 开发一个客户项目时,客户报告了网络应用程序中的一个错误。

\n\n

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

\n\n

处理命令行参数时出错

\n\n

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

\n\n

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

\n\n

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

\n\n

由于这是 HTML 规范的限制,我们需要另一个解决方案来满足 \xe2\x80\x9c 的客户端\xe2\x80\x99s 要求我希望能够选择多个员工并向他们所有人发送电子邮件\xe2\ x80\x9d

\n\n

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

\n\n

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

\n\n

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

\n\n

引用 jquery.copy.js 文件后,将数据推送到剪贴板所需要做的就是运行以下命令:

\n\n
$.copy("some text to copy");\n
Run Code Online (Sandbox Code Playgroud)\n\n

好,易于 ;)

\n\n

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

\n

  • 而且,从该博客文章来看,zeroclipboard 看起来不错 - http://code.google.com/p/zeroclipboard/ (2认同)