9

2つのスクリプトがあります。それらを同じ名前空間(@namespaceフィールド)に配置します。

他の人とインタラクティブになってほしいです。

具体的には、スクリプトARunByDefaultを123に設定します。スクリプトBにチェックするかどうかを確認してから、タイムアウトなどを使用しRunByDefault==123スクリプトAにスクリプトBの関数を呼び出します。

どうすればよいですか?スクリプトをマージしたくありません。

4

1 に答える 1

9

スクリプトは相互に直接対話することはできず、スクリプト名の競合// @namespaceを解決するためだけのものです。(つまり、名前空間が異なる場合にのみ、「LinkRemover」という名前の2つの異なるスクリプトを使用できます。)

個別のスクリプトは、以下を使用して情報を交換できます。

  • クッキー-同じように機能します-ドメインのみ
  • localStorage-同じように機能します-ドメインのみ
  • 制御するサーバーへのAJAXを介した値の送受信は、クロスドメインで機能します。

それでおしまい。

同じスクリプトの異なる実行中のインスタンスは、とを使用GM_setValue()して情報を交換できGM_getValue()ます。この手法には、クロスドメインであり、簡単で、ターゲットWebページからは見えないという利点があります。

Tampermonkeyでのクロスタブ通信のこの実用的な例を参照してください。


Chromeでは、Chromeのみで、非標準のFileSystemAPIを使用してローカルファイルにデータを保存できる場合がありますしかし、これはおそらく、ユーザーがすべてのトランザクションをクリックする必要があります-それが機能したとしても。

もう1つのオプションは、ヘルパーとして機能し、ファイルIOを実行する拡張機能(アドオン)を作成することです。通常は、を介して対話しますpostMessage

実際には、実際にデータを共有する必要のあるスクリプトをマージするだけで簡単でクリーンな状況に遭遇したことはありません。


また、スクリプトはコードを共有できませんが、JSをターゲットページに挿入し、両方がそれにアクセスできます。

最後に、AFAICTのスクリプトは、並行してではなく、常に順次実行されます。ただし、「ユーザースクリプトの管理」パネルから実行順序を制御できます。

于 2011-08-11T13:08:50.790 に答える