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バージョン:

GM開発者はGreasemonkeyのサポートを拒否し、FFとFlashのセキュリティ設定を克服する必要があるため、これをGreasemonkeyで行うのは非常に困難です。手動クリック
でコピーを開始する場合は、これを行うことができます。その場合は、この質問の手法の1つを使用してください。

ある種の完全自動クリップボード操作が必要な場合は、GMスクリプトで使用する独自のアドオンまたはプラグインを開発する必要があります。


Scriptishはこれを何年もサポートしてきました:

スクリプトアドオンの切り替えを受け入れる場合は、 ScriptishGM_setClipboard()がクリップボードの設定を提供していることに注意してください。(しかし、それを読む機能はありませんか?!)

Scriptishは完璧ではありませんが、いくつかの点でGreasemonkeyよりも優れています。(私はどちらのアドオンとも提携していないことに注意してください。また、どちらにも完全に満足しているわけではありません。)

ほとんどのGMスクリプトは、問題なくScriptishで実行されます。


コードスニペットについては、質問から。それらは本質的に同じものです(最初はGMサンドボックスを説明するだけです)。このアプローチはFirefoxの多くのバージョンで廃止されており、置換コードは十分に文書化されていません。
ユーザーの操作を必要とする手法を使用するか、カスタムヘルパーアドオンを作成する必要があります。

于 2012-10-25T21:11:04.813 に答える