私は元々、マニフェストバージョン1を使用して元々作成した拡張機能を持っています。chrome.tabs.getSelected
とchrome.tabs.getAllInWindow
はChrome 33で廃止されました。それをもっと新しいものにしたかったのです。マニフェストの現在のアクセス許可はtabs
です。私はこれが非同期である必要があるかもしれないと聞きました。固定タブを除外してタブを左に閉じる
存在する拡張子は、選択したタブまたはアクティブなタブの左側にあるALLのタブを閉じるボタンです。
function closeLeftTabs() {
var curTab;
chrome.tabs.getSelected(null , function(tab) {
curTab=tab;
});
chrome.tabs.getAllInWindow(null,function(tabs) {
for (var i = 0; i < tabs.length; i++) {
if (tabs[i].index<curTab.index){
chrome.tabs.remove(tabs[i].id, null);
}
}
});
}
chrome.browserAction.onClicked.addListener(function(tab) {
closeLeftTabs();
});
私はchrome.tabs.query
のqueryInfoパラメータを使用して(それらを閉じていない)固定タブを無視して、それを更新していないんだけど、ボタンを押したときにJavaScriptがもはや機能します。これまで私が持っていたアイデアがあります。
function closeLeftTabs() {
var curTab;
chrome.tabs.query({highlighted: true}, function(tab) {
curTab=tab;
});
chrome.tabs.query({pinned: false},function(tabs) {
for (var i = 0; i < tabs.length; i++) {
if (tabs[i].index<curTab.index){
chrome.tabs.remove(tabs[i].id, null);
}
}
});
}
chrome.browserAction.onClicked.addListener(function(tab) {
closeLeftTabs();
});
上記のコードのボタンをクリックすると、何もしないようです。 JavaScriptの経験はあまりなく、新しいパラメータはまだ使用していません。私もcurrentWindow
とlastFocusedWindow
のブール値で実験したが、何も変わっていないので、問題の根本を特定することはできない。
chrome.tabs.queryはコールバックを持つすべてのクロムAPIとasyncなので、次の文が実行されると 'curTab'は未定義です。 「非同期呼び出しからの応答を返すにはどうすればよいですか?」(https://stackoverflow.com/q/14220321)を参照してください。このようなエラーは、素晴らしい組み込みdevtoolsデバッガを使用して数秒で捕捉できます関数の内部にある。 – wOxxOm
[非同期呼び出しからの応答を返すにはどうすればよいですか?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –