function doit() {
alert(3);
// Statement 1
// chrome.tabs.create({url:"http://www.google.com"});
// Statement 2
// chrome.tabs.update({url:"http://en.wikipedia.org"});
alert(4);
}
chrome.browserAction.onClicked.addListener(doit);
スクリプトをそのまま実行すると、3 と 4 の JS アラートが表示されます。OK。
ステートメント 1 にコメントしてスクリプトを実行すると、3 の JS アラートが表示され、次に Google が新しいアクティブなタブで開き、4 の JS アラートが表示されます。
ステートメント 1 をコメントアウトし、ステートメント 2 でコメントすると、3 の JS アラートが表示され、それだけです。
http://code.google.com/chrome/extensions/tabs.html#method-updateによると、tabId オブジェクトを渡す必要はありません。これは、「現在のウィンドウの選択されたタブにデフォルト設定される」ためです。url オブジェクトは、ステートメント 1 で chrome.tabs.create を実行したときに気づいたように、「タブをナビゲートする URL」として定義されています。
chrome.tabs.update ステートメントが機能しないのはなぜですか?