cross-browser - 在 JavaScript 中复制/粘贴?

标签 cross-browser copy clipboard paste

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

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

感谢您的帮助。

最佳答案

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

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

坏消息是,使用您自己的上下文菜单进行复制和粘贴是有问题的。甚至 Google 也无法解决这个问题(尝试在 Firefox 的 Google Docs 中使用上下文菜单复制或粘贴)。您将能够在 IE 中使用它而不会遇到太多麻烦。这是因为您可以通过以下方式随时从 Javascript 访问 clipboardData 对象:

window.clipboardData

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

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

document.execCommand('copy');

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

关于cross-browser - 在 JavaScript 中复制/粘贴?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951762/

相关文章:

bash - 别名 > into/dev/clipboard 不工作

python - 使用 Python 和 Tkinter 从剪贴板复制

javascript - 脚本仅适用于 IE

HTML Textarea - 光标从 textarea 的中心而不是顶部开始

javascript - 有没有办法检测对混合模式的支持?

使用流下载带有身份验证 token 的大文件

python - 在 numpy 数组中,我想将一列复制到另一个矩阵并从原始矩阵中删除该列

Python:对子字符串列表进行排序,而不创建每个子字符串的单独副本

windows - 使用Windows批处理文件将具有相同文件名的不同文件夹中的多个文件复制到一个公共(public)文件夹中

javascript - 修改从空白已呈现可见的网页复制文本的方式