よういちろうです。
えーじさんが提示したやり方で全く問題ないと思いますが、一つ別の手もあったりします。
もし読み込み完了を監視したいURLが一つあるいは数個に限定されているなら、Content Scriptを
使うという手があります。manifest.jsonファイルに以下のように記載して、
...
"background": {
"scripts": [ "background.js" ],
"persistent": false
},
"content_scripts": [
{
"js": [ "cs.js" ],
"run_at": "document_idle"
}
],
...
cs.jsファイルがtab.status == "complete"とほぼ同じタイミングで評価されるので、cs.jsファイル
の中で、
chrome.runtime.sendMessage({message: "complete"});
とメッセージを送り、background.jsにて、
chrome.runtime.onMessage.addListener(function(req, sender, sendResponse) {
// タブ読み込み完了時の処理
});
としてメッセージを受け取り、タブ読み込み完了時の処理を記述します。これでえーじさんの
コードと同じことが実現可能です。
違いは・・・というと、
* 書くべきコードが多く、ただただ面倒。
* タブの更新イベント監視だと、全てのタブの更新の度にEvent page(=background.js)のコン
テキストが活性化される。Content Scriptsのやり方だと、指定したURLのタブが更新された
時のみEvent pageのコンテキストが活性化される。
があげられます。後者がChrome全体の動作に対してエコに働くのであれば、メリットとして
は大きいかな、と思います。ただし、ホントにエコかどうかは未確認です。G+のコミュニティ
で聞いてみたいと思ってます。
ご参考になれば幸いです。ではでは。
2013年6月26日水曜日 11時23分17秒 UTC+9 Eiji Kitamura: