2

InjectDetailsChrome 拡張コードでオブジェクトを使用しています。フィールドで参照されているドキュメントについて少し混乱していrunAtます。

ここにドキュメントのスニペットがあります

runAt ( optional enum of "document_start", "document_end", or "document_idle" )

ここで参照されているドキュメントはどれですか? 可能なオプションは次のとおりです。

  • 元のドキュメント (ブラウザに読み込まれる親フレーム)。
  • JS/Css が挿入されるドキュメント。(元のドキュメント内に複数の iframe がある場合があります)
  • background.html としてバックグラウンドで実行されるドキュメント

これを確認するにはどうすればよいですか?

4

1 に答える 1

5

allFramesがの場合true、「ドキュメント」は最上位のドキュメントのみを参照します。
それ以外の場合は、一致した各フレーム (トップレベル、iframe など) のドキュメントを参照します。

詳細についてrun_atは、コンテンツ スクリプトのドキュメントを参照してください。

run_at    string

オプション。のファイルがいつjs挿入されるかを制御します。「document_start」、「document_end」、または「document_idle」を指定できます。デフォルトは「document_idle」です。

「document_start」の場合、ファイルは からのファイルの後、css他の DOM が構築される前、または他のスクリプトが実行される前に挿入されます。

「document_end」の場合、ファイルは DOM が完了した直後に挿入されますが、画像やフレームなどのサブリソースが読み込まれる前に挿入されます。

window.onload「document_idle」の場合、ブラウザは、「document_end」とイベント発生直後の間でスクリプトを挿入する時間を選択します。挿入の正確なタイミングは、ドキュメントの複雑さと読み込みにかかる時間によって異なり、ページの読み込み速度に合わせて最適化されます。

: "document_idle" を使用すると、コンテンツ スクリプトは必ずしもwindow.onloadイベントを受け取るとは限りません。onloadほとんどの場合、コンテンツ スクリプトは DOM の完了後に実行されることが保証されているため、"document_idle" で実行されているコンテンツ スクリプトではイベントをリッスンする必要はありません。スクリプトを の後に実行する必要がwindow.onloadある場合は、プロパティを使用して onload が既に起動しているかどうかを確認できdocument.readyStateます。

PS。プロパティ名はキャメルケースchrome.tabs.executeScript( runAt, allFrames) ですが、マニフェスト ファイルではアンダースコアで綴られています ( run_at, all_frames)。

于 2013-05-20T10:51:50.007 に答える