7

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

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

感谢您的帮助。

4

2 回答 2

7

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

好消息是,当用户使用剪贴板热键时,此示例为您提供了用于设置/获取任何支持的剪贴板数据类型的工作代码。

坏消息是使用您自己的上下文菜单进行复制和粘贴是有问题的。甚至 Google 也无法解决这个问题(尝试在 Firefox 的 Google Docs 中使用上下文菜单复制或粘贴)。您将能够在 IE 中毫不费力地让它工作。这是因为您可以随时通过 Javascript 通过以下方式访问 clipboardData 对象:

window.clipboardData

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

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

document.execCommand('copy');

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

于 2014-12-03T20:52:00.420 回答
1

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

更新:链接不可用,所以我从缓存中复制内容:

情景

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

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

处理命令行参数时出错

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

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

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

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

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

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

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

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

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

好,易于 ;)

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

于 2009-12-23T09:55:50.243 回答