chrome.browserAction.onClicked.addListener テンプレート
Google Chrome拡張機能用。あるページがすでに開かれていればそのタブを選択。開かれていなければ新規タブでページを開く。HOGE.html
のところを開きたいページのパスに書き換える。
素直にforループにした。
chrome.browserAction.onClicked.addListener(function () { var url = chrome.extension.getURL('HOGE.html'); chrome.tabs.getAllInWindow(null, function (tabs) { var tab; var i; for (i = 0; tab = tabs[i]; ++i) { if (tab.url === url) { chrome.tabs.update(tab.id, { selected: true }); return; } } chrome.tabs.create({ url: url, selected: true }); }); });
chrome.browserAction.onClicked.addListener(function () { var url = chrome.extension.getURL('HOGE.html'); chrome.tabs.getAllInWindow(null, function (tabs) { tabs.some(function (tab) { if (tab.url === url) { chrome.tabs.update(tab.id, { selected: true }); return true; } return false; }) || chrome.tabs.create({ url: url, selected: true }); }); });
Array#some
は、見方を変えれば途中で抜けられるArray#forEach
(参考:配列を走査するときに、途中でループを抜けるにはsomeが使える - os0x.blog)。