7
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 ステートメントが機能しないのはなぜですか?

4

2 に答える 2

8

tabIdパラメータを指定する必要があります。デフォルトnull設定を使用する場合は指定します。そうしないと、次のエラーが発生します。

'browserAction.onClicked' のイベント ハンドラーのエラー: エラー: 引数 1 の値が無効です。'integer' が必要ですが、'object' を取得しました。

このメッセージはバックグラウンド ページに記録されます。このコンソールにアクセスするには、この回答の 4 つの手順に従ってください。

修正されたコード: chrome.tabs.update(null, {url:"http://en.wikipedia.org"});

于 2012-04-27T15:32:55.917 に答える
0

更新するタブ (tab.id) を指定する必要があります。

chrome.tabs.update(id,{url:"http://en.wikipedia.org"});
于 2012-04-27T12:38:42.460 に答える