Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
36
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

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は、どういうときに使うのでしょうか?
知っている人がいたら教えてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
36
Help us understand the problem. What are the problem?