9

我发现this question而是试图用给那里的代码:如何使用Greasemonkey将数据复制到剪贴板?

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。
我还应该尝试什么?

回答

19

更新:

随着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做到,因为通用汽车的开发者拒绝支持它,FF和Flash的安全设置必须是克服。
你可以这样做,如果复制将由手动点击发起。在这种情况下,请使用this question中的技术之一。

如果您希望拥有某种全自动剪贴板操作,那么您将不得不为自己的GM脚本开发自己的插件或插件。


Scriptish已经支持了多年:

如果你是开放的切换脚本插件,注意Scriptish提供GM_setClipboard() to set the clipboard。 (但没有功能读取它?!)

Scriptish并不完美,但它在几个方面比Greasemonkey好。 (注意我不是附属于附加组件,也不是我完全满意。)

大多数GM脚本将以Scriptish运行,没有任何问题。


至于代码片段,从问题;它们本质上是相同的东西(第一个就是GM沙箱)。对于许多Firefox版本,这种方法已经过时,替换代码记录不完整。
您必须使用需要用户交互的技巧,否则您将不得不编写自定义帮助器插件。

+0

+1为Scriptish。创造了我的一天。 – Kris

+0

[Greasemonkey最后支持GM_setClipboard!](http://scriptish.org/news/2013/07/15/greasemonkey-finally-supports-clipboard.html) –