5

Greasemonkeyスクリプトを Safari および Chrome と互換性を持たせたいとします。

一方、Firefox では、Greasemonkey スクリプトは DOM の準備が整ったときにのみ実行されます。Chrome、Safari、および Opera は、DOM の準備が整う前に Greasemonkey スクリプトを実行しているようです。

したがって、私が探しているのは、ページ上でリスナーのみを実行し、DOM のロード/準備完了イベントを待機し、そのイベントを受信して​​から残りのスクリプトを実行するソリューションです。使用しているブラウザが Chrome、Safari、Opera の場合。Firefox を使用している場合は、スクリプトをすぐに実行してください。イベント リスナーを気にする必要はありません。

これをどのようにコーディングするのですか?

@NV

NV さん、ありがとうございます。そのスクリプトが Google Chrome にも対応しているかどうかご存じですか?

コードは

(function(){

    // Code here run after 'load' event in all browsers.

})();

Google Chrome の DOM 対応でも実行できますか?

4

3 に答える 3

1

まず、Nice alert UserJS を見てみましょう。Greasemonkey、Opera、および Safari Greasekit で動作します。

ページの読み込み後に何らかのコードを実行する場合、イベント リスナーはまったく必要ありません。

...サファリ+オペラ、DOMの準備が整う前にgmスクリプトを実行しているようです。

いいえ、実際にはもっと複雑です。Opera にはグリースモーキー互換モードがあります。yada- yada .user .jsという名前のすべてのスクリプトは互換モードで実行され、 DOM の準備が整った後に実行されます。

注: コードを匿名関数にラップして、変数がグローバル ウィンドウ オブジェクトに漏れるのを防ぎます (これは Opera で発生します)。

(function(){

  // Some code

})();

この場合、Safari Greasekit は Firefox Greasemonkey のように機能します。

于 2009-10-15T10:19:12.593 に答える
-1

JQuery などの JavaScript ライブラリがどのようにこれを実現しているかをご覧になると思います。実際に使用するには重すぎるかもしれませんが、この問題はすでに解決されています。

于 2009-10-14T21:36:00.847 に答える