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

时间:2012-10-25 19:17:44

标签: javascript firefox greasemonkey clipboard clipboard-interaction

我找到this question但是尝试使用那里给出的代码:

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


给出错误消息:

  

来自«http://example.com»的脚本被拒绝了UniversalXPConnect   特权。



我也尝试使用(from Mozilla site):

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

其中提供了错误消息:Components.classes is undefined

在这两种情况下,它都不适用于Windows 7上的最新Firefox 我还应该尝试什么?

1 个答案:

答案 0 :(得分:20)

更新

自版本1。10(2013年6月20日)起,Greasemonkey现在支持the GM_setClipboard() function 像这样使用:

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

GM_setClipboard ("The clipboard now contains this sentence.");


较旧的GM版本:

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

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


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

如果您愿意切换脚本加载项,请注意Scriptish提供GM_setClipboard() to set the clipboard。 (但没有阅读它的功能?!)

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

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


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