6

これを行う簡単な方法はありますか。また、運用方法の違いにより変更が必要なことはありますか?

4

2 に答える 2

5

これを行う最も簡単な方法は次のとおりです。

  1. URL デコーダを介してブックマークレット コードを実行します。javascript:alert%20('Hi%20Boss!')%3Bたとえば、次のようになります。
    javascript:alert ('Hi Boss!');

  2. 先頭javascript:を剥がします。結果:alert ('Hi Boss!');

  3. このコードを Greasemonkey ファイルの末尾に追加します。たとえば、次のコードで
    Hello World.user.jsという名前のファイルを作成します。

    // ==UserScript==
    // @name            Hello World!
    // @description     My first GM script from a bookmarklet
    // @include         https://stackoverflow.com/questions/*
    // @grant           none
    // ==/UserScript==
    
    alert ('Hi Boss!');
    
  4. Hello World.user.jsをFirefox ( CtrlO) で開きます。Greasemonkey は、スクリプトのインストールを求めるプロンプトを表示します。

  5. @includeこれで、ブックマークレット コードは、 and@excludeディレクティブで指定したページで自動的に実行されます。

  6. 更新: 最大限の互換性を確保するに@grant noneは、Greasemonkey および Tampermonkey の新しいバージョンで追加されたディレクティブを使用してください。


重要:

于 2011-08-02T01:20:46.207 に答える
1

これは、 「通常の」JS と Greasemonkey の違いによる一般的な落とし穴を回避するための非常に優れた記事です。

最初に最も重要なこと:

  • 関数を文字列として使用しない window.setTimeout("my_func()", 1000);で ください。window.setTimeout(my_func, 1000);window.setTimeout(function(){doSomething(); doSomethingOther();}, 1000);

  • element.onclickむしろ設定しないでくださいelement.addEventListener("click", my_func, true);

  • 通常さまざまな DOM オブジェクトを返す一部のコードは、Greasemonkey 環境では XPCNativeWrapper でラップされたオブジェクトを返します。これはセキュリティ上の理由によるものです。

    一部のメソッドとプロパティは「透過的」であり、ラップされたオブジェクトで呼び出すことができますが、そうでないものもあります。これを回避する方法については、前述の記事を参照してください。また、(これは一般的には推奨されませんが、テストなどのために) 使用することもできます。それは、 Greasemonkey でobj.something/obj.something() が動かない場合は / を試すことobj.wrappedJSObject.somethingですobj.wrappedJSObject.something()

于 2011-09-14T00:34:15.873 に答える