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) –