Я сделал это расширение для Safari, которое закрывает неактивные вкладки на текущей странице
(var tabss = safari.application.activeBrowserWindow.tabs;
for (n=0; n<tabss.length; n++)
{
if(tabss[n] != safari.application.activeBrowserWindow.activeTab)
tabss[n].close();
}
)
Я хочу сделать то же самое для Chrome. Но Chrome имеет другой способ ведения дел. Я все еще хочу запустить цикл по индексу вкладок и закрыть их, если они не выбраны. Я смог получить длину индекса окна, но я не знаю, как сделать цикл закрытия вкладок столько раз, чтобы не закрыть выбранную вкладку. Я смог получить длину, выполнив это:
<html>
<head>
<script>
var targetWindow = null;
var tabCount = 0;
function start(tab) {
chrome.windows.getCurrent(getWindows);
}
function getWindows(win) {
targetWindow = win;
chrome.tabs.getAllInWindow(targetWindow.id, getTabs);
}
function getTabs(tabs) {
tabCount = tabs.length;
alert(tabCount);
}
// Set up a click handler so that we can merge all the windows.
chrome.browserAction.onClicked.addListener(start);
</script>
</head>
</html>
Получено из http://code.google.com/chrome/extensions/samples.html Слияние окон.
Теперь я хочу запустить цикл, но не могу понять, как сказать циклу не закрывать выбранную вкладку. Я думал о том, чтобы цикл сравнивал зацикленную вкладку с идентификатором вкладки выбранного окна, и он не будет закрываться и переходить к следующему порядковому номеру вкладки в цикле.
Что-то вроде:
(
for (n=0; n<tabCount; n++)
{
if(chrome.tabs[n].id != tab.id)
chrome.tabs[n].remove();
}
)
Но я не знаю, как внедрить текущий табид, так как все функции обратного вызова поставили этот хак / нуб в тупик. Я не могу ввести переменную из другой функции из того, что я понимаю.