Chrome扩展程序可将多个选项卡移动到新窗口

伊山

我正在尝试构建一个chrome扩展程序,该扩展程序会将所有选项卡从当前选项卡的左侧移至新窗口。

当我执行以下代码时,它将在其自己的窗口中移动每个左选项卡。因此,如果当前选项卡左侧有2个选项卡,它将创建2个窗口,每个窗口中有1个选项卡。我如何获得它以便仅将所有左侧的选项卡移动到新窗口(即:它不会为当前选项卡左侧的每个选项卡创建一个新窗口)?

function groupTabsToTheLeft(info, tab) {
    chrome.tabs.getAllInWindow(null, function (tabs) {
        for (var i = 0; i < tabs.length; i++) {
            if (tabs[i].index < tab.index) {  
            chrome.windows.create({"tabId": tabs[i].id});           
            } else {
                break;
            }
        }
    });
}
加尔帕克

更新
根据OP的额外要求,以下解决方案具有以下规格:

  • 将活动选项卡左侧的选项卡移动到新窗口。
  • 将新窗口配置为与原始窗口具有相同的位置,大小和状态。
  • 删除默认情况下在新窗口中创建的空选项卡。
  • 将焦点移至原始窗口(完成时)。

您可以这样做:

  1. 从活动窗口中获取所需的信息(使用chrome.windows.get)。
  2. 确定应移动的选项卡ID。
  3. 创建一个空窗口(使用chrome.windows.create)。
  4. 将它们全部移至步骤(1)中创建的窗口(使用chrome.tabs.move)。
  5. 控制新创建的窗口和移动的选项卡的确切行为(使用chrome.windows.updatechrome.tabs.remove)。

示例background.js看起来像这样:

chrome.browserAction.onClicked.addListener(function(tab) {
    /* Get the `tab`'s window along with its containing tabs */
    chrome.windows.get(tab.windowId, { populate: true }, function(oldWin) {
        /* Determine which tabs should be moved
         * (i.e. are on the left of `tab` */
        var tabs = oldWin.tabs;
        var tabsToMove = [];
        for (var i = 0; i < tabs.length; i++) {
            if (tabs[i].index < tab.index) {
                tabsToMove.push(tabs[i].id);
            }
        }

        /* If there are any tabs to move... */
        if (tabsToMove.length > 0) {
            /* Create a new window with the same
             * location and size as the original */
            chrome.windows.create({
                top: oldWin.top,
                left: oldWin.left,
                width: oldWin.width,
                height: oldWin.height,
                focused: false
            }, function(newWin) {
                /* Remove the new, empty tab created by default */
                chrome.tabs.query({
                    windowId: newWin.id
                }, function(tabsToClose) {
                    /* Update the window's state (e.g. "maximized") */
                    chrome.windows.update(newWin.id, { state: oldWin.state });

                    /* Move the tabs to the newly created window */
                    chrome.tabs.move(tabsToMove, {
                        windowId: newWin.id,
                        index: -1
                    }, function() {
                        /* Close any tabs that pre-existed (i.e. 1 empty tab)
                         * [Do not do this BEFORE moving the tabs,
                         *  or the window will be empty and will close] */
                        var lastIdx = tabsToClose.length - 1;
                        tabsToClose.forEach(function(t, idx) {
                            chrome.tabs.remove(t.id);
                            if (idx === lastIdx) {
                                chrome.windows.update(oldWin.id, {
                                    focused: true
                                });
                            }
                        });
                    });
                });
            });
        }
    });
});

为了完整起见,随附的manifest.js可能如下所示:

{
    "manifest_version": 2,
    "name":    "Test Extension",
    "version": "0.0",
    "offline_enabled": true,

    "background": {
        "persistent": false,
        "scripts": ["background.js"]
    },

    "browser_action": {
        "default_title": "Test Extension"
        //"default_icon": {
        //    "19": "img/icon19.png",
        //    "38": "img/icon38.png"
        //},
    },

    "permissions": [
        "tabs"
    ]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Chrome扩展程序可将多个标签页移动到新窗口

来自分类Dev

在Firefox中分离选项卡的快捷键(将选项卡移动到新窗口)

来自分类Dev

用于将代码编辑器选项卡移动到 Visual Studio 中的新窗口的键盘快捷键

来自分类Dev

Google Chrome扩展程序在弹出窗口和选项卡之间进行对话

来自分类Dev

Chrome扩展程序:选项卡上的executeScript

来自分类Dev

Chrome扩展程序-executeScript不在活动选项卡中

来自分类Dev

Chrome扩展程序:Javascript注入到活动选项卡

来自分类Dev

Chrome 扩展程序:如何通过单击 html 弹出窗口中的按钮在新选项卡中打开指定链接?

来自分类Dev

如何以编程方式将选项卡移动到firefox Addon-SDK扩展中的另一个窗口?

来自分类Dev

鸣叫按钮打开新窗口和新选项卡

来自分类Dev

将Firefox选项卡组移到新窗口

来自分类Dev

在新窗口或选项卡中打开的 js 函数

来自分类Dev

在新窗口中打开 Markdown 预览选项卡?

来自分类Dev

将多个工作簿中的特定选项卡移动到单个工作簿中

来自分类Dev

Chrome扩展程序-找出扩展程序选项卡是否打开

来自分类Dev

Chrome扩展程序:webRequest重定向到现有选项卡,而无需打开新选项卡

来自分类Dev

Chrome扩展程序:webRequest重定向到现有选项卡,而无需打开新选项卡

来自分类Dev

将chrome webrequest的addeventlistener限制为扩展的当前选项卡或主窗口

来自分类Dev

如何在VBScript中制作选项卡以移动HTA应用程序的窗口?

来自分类Dev

将表单上的控件移动到选项卡上

来自分类Dev

阻止jQuery选项卡移动到页面顶部

来自分类Dev

zsh使用shift选项卡移动到父目录

来自分类Dev

将匹配的选项卡移动到pentadactyl中的新选项卡组

来自分类Dev

Chrome扩展程序中的所有选项卡中设置切换开关状态

来自分类Dev

Chrome扩展程序仅在当前选项卡中更改用户代理

来自分类Dev

Chrome扩展程序:在当前选项卡上进行事件监听

来自分类Dev

chrome扩展程序中的选项卡更改时的页面内容

来自分类Dev

Chrome扩展程序-在选项卡上定义的调用功能(参考错误)

来自分类Dev

如何在开发(解包)时在所有选项卡上提供 Chrome 扩展程序?

Related 相关文章

  1. 1

    Chrome扩展程序可将多个标签页移动到新窗口

  2. 2

    在Firefox中分离选项卡的快捷键(将选项卡移动到新窗口)

  3. 3

    用于将代码编辑器选项卡移动到 Visual Studio 中的新窗口的键盘快捷键

  4. 4

    Google Chrome扩展程序在弹出窗口和选项卡之间进行对话

  5. 5

    Chrome扩展程序:选项卡上的executeScript

  6. 6

    Chrome扩展程序-executeScript不在活动选项卡中

  7. 7

    Chrome扩展程序:Javascript注入到活动选项卡

  8. 8

    Chrome 扩展程序:如何通过单击 html 弹出窗口中的按钮在新选项卡中打开指定链接?

  9. 9

    如何以编程方式将选项卡移动到firefox Addon-SDK扩展中的另一个窗口?

  10. 10

    鸣叫按钮打开新窗口和新选项卡

  11. 11

    将Firefox选项卡组移到新窗口

  12. 12

    在新窗口或选项卡中打开的 js 函数

  13. 13

    在新窗口中打开 Markdown 预览选项卡?

  14. 14

    将多个工作簿中的特定选项卡移动到单个工作簿中

  15. 15

    Chrome扩展程序-找出扩展程序选项卡是否打开

  16. 16

    Chrome扩展程序:webRequest重定向到现有选项卡,而无需打开新选项卡

  17. 17

    Chrome扩展程序:webRequest重定向到现有选项卡,而无需打开新选项卡

  18. 18

    将chrome webrequest的addeventlistener限制为扩展的当前选项卡或主窗口

  19. 19

    如何在VBScript中制作选项卡以移动HTA应用程序的窗口?

  20. 20

    将表单上的控件移动到选项卡上

  21. 21

    阻止jQuery选项卡移动到页面顶部

  22. 22

    zsh使用shift选项卡移动到父目录

  23. 23

    将匹配的选项卡移动到pentadactyl中的新选项卡组

  24. 24

    Chrome扩展程序中的所有选项卡中设置切换开关状态

  25. 25

    Chrome扩展程序仅在当前选项卡中更改用户代理

  26. 26

    Chrome扩展程序:在当前选项卡上进行事件监听

  27. 27

    chrome扩展程序中的选项卡更改时的页面内容

  28. 28

    Chrome扩展程序-在选项卡上定义的调用功能(参考错误)

  29. 29

    如何在开发(解包)时在所有选项卡上提供 Chrome 扩展程序?

热门标签

归档