LoginSignup
37

More than 5 years have passed since last update.

Organization

Google Chrome拡張でContent Scriptsを注入するタイミングを制御

翻訳

manifest.jsonrun_atプロパティの説明の翻訳しました。

run_atプロパティ

必須ではありません。jsプロパティのファイルを注入するタイミングを制御します。
設定値は次の三つです

  • document_start
  • document_end
  • document_idle(初期値)

値ごとの注入のタイミング

document_start

cssプロパティのファイルの読込後、DOMが構築されscriptsが実行される前です。

document_end

DOMが構築された直後、画像やフレームなどのサブリソースが読込まれる前です。

document_idle

ブラウザが決定します。document_endから、window.onloadイベントまでの間の任意のタイミングです。
実際のタイミングはdocumentの複雑さによって変わります。
また、documentの読込みに掛かる時間、documentを読込みに最適化しているかにも左右されます。

document_idleとwindow.onloadイベントに関する注意

document_idleでは、content scriptswindow.onloadイベントを受信しない可能性があります。イベント発火後にcontent scriptsを実行しているかもしれません。

一般に、document_idleでは、window.onloadイベントを待つ必要はありません。DOM構築完了後の実行を保証しています。

もし、厳密にwindow.onloadの後にcontent scriptsを実行するには、イベントがすでに発火したかチェックします。document.readyStateプロパティを使います。

使い分け

基本的にdocument_idleで十分しょう。初期値なので、run_atプロパティは設定不要です。

巨大な画像を読み込むことなど、サブリソースの読込みに時間が掛かるとわかっている場合は、document_endを設定します。
サブリソースの読込み前に実行されます。ユーザーの待ち時間が気持ち減ります。

document_startは、どういうときに使うのでしょうか?
知っている人がいたら教えてください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
37