将文本复制到剪贴板的最佳方法是什么?(多浏览器)
我试过了:
function copyToClipboard(text) {
if (window.clipboardData) { // Internet Explorer
window.clipboardData.setData("Text", text);
} else {
unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
const clipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
clipboardHelper.copyString(text);
}
}
Run Code Online (Sandbox Code Playgroud)
但在Internet Explorer中,它会出现语法错误.在Firefox中,它说unsafeWindow is not defined
.
没有闪存的好技巧:Trello如何访问用户的剪贴板?
Web应用程序如何检测粘贴事件并检索要粘贴的数据?
我想在将文本粘贴到富文本编辑器之前删除HTML内容.
之后粘贴后清理文本有效,但问题是所有以前的格式都丢失了.例如,我可以在编辑器中编写一个句子并将其设为粗体,但是当我粘贴新文本时,所有格式都会丢失.我想只清理粘贴的文本,并保持以前的格式不变.
理想情况下,该解决方案应适用于所有现代浏览器(例如,MSIE,Gecko,Chrome和Safari).
请注意,MSIE有clipboardData.getData()
,但我找不到其他浏览器的类似功能.
我注意到Google发布的一篇博客文章提到,如果您使用的是最新版本的Chrome,则可以直接将剪贴板中的图片粘贴到Gmail邮件中.我尝试使用我的Chrome版本(12.0.742.91 beta-m),使用控制键或上下文菜单效果很好.
从这种行为我需要假设Chrome中使用的最新版本的webkit能够处理Javascript粘贴事件中的图像,但我无法找到任何对此类增强的引用.我相信ZeroClipboard绑定到按键事件以触发其闪存功能,因此无法通过上下文菜单工作(同样,ZeroClipboard是跨浏览器,帖子说这只适用于Chrome).
那么,这是如何工作的以及对启用该功能的Webkit(或Chrome)进行增强的地方?