0

Greasemonkey を使用して "google.com/*" で小さなスクリプトを実行しています。
基本的に、私のスクリプトはいくつかのメニュー項目を Google メニューに追加します (画像、動画、地図、ニュース、ショッピングなどを見つけることができます)。

このメニューは qbar div 内にあるため、次のようになります。

<div id="gbar"> ...menu code ... </div>

私のスクリプトの次の行は、Google Web ページ (www.google.com) にアクセスすると正常に動作します。

var gbar = var gbar = document.getElementById("gbar");
if (qbar != null) alert("qbar exist!");
else alert("qbar is null");

このコードは qbar を存在として警告します。これは良いことです。

たとえば、Google で任意の単語を検索すると、「madman」を検索すると、次のページが表示されます。

http://www.google.com/#sclient=psy&hl=en&q=madman&aq=f&aqi=g5&aql=&oq=&pbx=1&fp=fd0f73886609171d

現在、スクリプトはまだ実行されており、「gbar is null」というアラートが表示されるようになりました

その理由は、ページに gbar 要素が作成される前にスクリプトが実行されているためだと思います。すべてのコンテンツの読み込みが完了したときにのみグリース モンキー スクリプトが実行されると確信していたので、これは奇妙です。

4

1 に答える 1

4

DOM ミューテーション イベントを設定できます。基本的に、ここに手順があります:

  • 最初の検索document.getElementById('gbar')を行い、見つかった場合は処理します。

  • ドキュメントにDOMNodeInsertedイベント ハンドラを設定します。

    • 挿入された要素にid="gbar"gbar が挿入されていることがわかります。
    • そうでない場合は、挿入された要素内で要素を検索し、id="gbar"見つかった場合はそれを処理します。

実際のコード例を見ることができます。ドキュメントに a が追加されると、5 つの感嘆符gbarが追加されます。

于 2011-01-16T12:35:36.133 に答える