16

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

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 权限。



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

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

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

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

4

1 回答 1

27

更新:

从 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.");


较旧的 GM 版本:

Greasemonkey 很难做到这一点,因为 GM 开发人员拒绝支持它,并且必须克服 FF 和 Flash 安全设置。
如果复制将通过手动单击启动,则可以执行此操作。在这种情况下,请使用此问题中的一种技术。

如果您希望有某种全自动剪贴板操作,那么您将必须开发自己的插件或插件供您的 GM 脚本使用。


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

如果您愿意切换脚本插件,请注意Scriptish提供GM_setClipboard()设置剪贴板。(但没有读取它的功能?!)

Scriptish 并不完美,但在某些方面它比 Greasemonkey 更好。(请注意,我不隶属于任何一个附加组件,也不完全满意。)

大多数 GM 脚本可以毫无问题地在 Scriptish 中运行。


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

于 2012-10-25T21:11:04.813 回答