如何使用Greasemonkey将数据复制到剪贴板?

LA_*_*LA_ 12 javascript clipboard firefox greasemonkey clipboard-interaction

我发现了这个问题,但试图使用那里给出的代码:

unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
const clipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
    .getService(Components.interfaces.nsIClipboardHelper)
;
clipboardHelper.copyString('test');
Run Code Online (Sandbox Code Playgroud)


给出错误消息:

来自" http://example.com "的脚本被拒绝了UniversalXPConnect权限.



我也尝试过(来自Mozilla网站):

const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"]
    .getService(Components.interfaces.nsIClipboardHelper)
;
gClipboardHelper.copyString("test2");
Run Code Online (Sandbox Code Playgroud)

这给出了错误信息:Components.classes is undefined.

在这两种情况下,它都无法与Windows 7上的最新Firefox一起使用.
我还应该尝试什么?

Bro*_*ams 21

更新:

从版本1.10(2013年6月20日)开始,Greasemonkey现在支持GM_setClipboard()功能.
使用如下:

// ==UserScript==
// @name     _YOUR_SCRIPT_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant    GM_setClipboard
// ==/UserScript==

GM_setClipboard ("The clipboard now contains this sentence.");
Run Code Online (Sandbox Code Playgroud)

较旧的GM版本:

使用Greasemonkey非常困难,因为GM devs拒绝支持它,必须克服FF和Flash安全设置.
如果通过手动点击启动副本,则可以执行此操作.在这种情况下,请使用此问题中的一种技术.

如果您希望进行某种全自动剪贴板操作,则必须为您的GM脚本开发自己的附加组件或插件.


多年来,Scriptish一直支持这一点:

如果您愿意切换脚本加载项,请注意Scriptish提供GM_setClipboard()了设置剪贴板的功能.(但没有阅读它的功能?!)

Scriptish并不完美,但它在某些方面比Greasemonkey更好.(注意我不是附加任何附加组件,也不是我对它们完全满意.)

大多数GM脚本都可以在Scriptish中运行,没有任何问题.


至于代码片段,从问题; 它们本质上是相同的(第一个只是GM沙箱的帐户).对于许多版本的Firefox而言,这种方法已经过时,而且替换代码的记录很少.
您将不得不使用需要用户交互的技术,或者您必须编写自定义帮助程序加载项.