chrome - 如何用 JavaScript 遍历浏览器的标签页?
ringa_lee
ringa_lee 2017-04-10 14:36:32
[JavaScript讨论组]

以chrome为例好了。

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
天蓬老师

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

不过以 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
    })
  });
});
大家讲道理

参考了官方的这个例子就明白了:
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); //使用
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号