以chrome为例好了。
参考了官方的这个例子就明白了:
https://developer.chrome.com/extensions/examples/api/windows/merge_windows.zip
主要的实现如下:
function start(tab) {
chrome.windows.getCurrent(getWindows);
}
function getWindows(win) {
targetWindow = win;
chrome.tabs.getAllInWindow(targetWindow.id, getTabs);
}
function getTabs(tabs) {
tabCount = tabs.length;
// We require all the tab information to be populated.
chrome.windows.getAll({"populate" : true}, moveTabs);
}
function moveTabs(windows) {
var numWindows = windows.length;
var tabPosition = tabCount;
for (var i = 0; i < numWindows; i++) {
var win = windows[i];
var numTabs = win.tabs.length;
for (var j = 0; j < numTabs; j++) {
var tab = win.tabs[j];
//实现代码
tabPosition++;
}
}
}
chrome.browserAction.onClicked.addListener(start); //使用
10 回答11.1k 阅读
6 回答2k 阅读✓ 已解决
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
客户端脚本?可能不行……
不过以 Chrome 为例的话,可以编写 Extensions 来实现这一点,相关的文档请见:https://developer.chrome.com/extensions/tabs#method-query
简单说一下:
调用方法(签名)
queryInfo
是一个条件对象,可以用于过滤不想获取的 tab(s)。如果要获取所有的 tabs,传一个空对象即可,获取到的 tabs 数组将会传递给callback
函数。所有可用的条件参见上面的文档,举几个例子: