首页 > 如何用 JavaScript 遍历浏览器的标签页?

如何用 JavaScript 遍历浏览器的标签页?

以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); //使用

客户端脚本?可能不行……

不过以 Chrome 为例的话,可以编写 Extensions 来实现这一点,相关的文档请见:https://developer.chrome.com/extensions/tabs#method-query

简单说一下:

调用方法(签名)

chrome.tabs.query(object queryInfo, function callback)

queryInfo 是一个条件对象,可以用于过滤不想获取的 tab(s)。如果要获取所有的 tabs,传一个空对象即可,获取到的 tabs 数组将会传递给 callback 函数。所有可用的条件参见上面的文档,举几个例子:

// 获取所有的 tabs
chrome.tabs.query({}, function (tabs) {
  //...
});

// 获取所有的 pin tabs
chrome.tabs.query({ pinned: true }, function (pinnedTabs) {
  //...
});

// 遍历 tabs,然后复制它们
chrome.tabs.query({}, function (tabs) {
  tabs.forEach(function (tab) {
    chrome.tabs.duplicate(tab.id, function (copy) {
      console.log(copy.title);  // copy 是复制出来的 tab
    })
  });
});
【热门文章】
【热门文章】