所有标签的屏幕截图Chrome扩展

11dmarpk  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(131)

我是新来的,我需要知道如何在同一时间获得所有选项卡的截图,我已经使用了函数Chrome.tabs.captureVisibleTab但作为一个参数窗口,我该怎么办?谢谢你,谢谢

dvtswwa3

dvtswwa31#

您必须使用tabs.update调出窗口中的每个选项卡并捕获它。

function captureWindowTabs(windowId, callbackWithDataUrlArray) {
    var dataUrlArray = [];

    // get all tabs in the window
    chrome.windows.get(windowId, {populate:true}, function(windowObj) {
        var tabArray = windowObj.tabs;

        // find the tab selected at first
        for(var i = 0; i < tabArray.length; ++i) {
            if(tabArray[i].active) {
                var currentTab = tabArray[i];
                break;
            }
        }

        // recursive function that captures the tab and switches to the next
        var photoTab = function(i) {
            chrome.tabs.update(tabArray[i].id, {active:true}, function() {
                chrome.tabs.captureVisibleTab(windowId, {format:"png"}, function(dataUrl) {
                    // add data URL to array
                    dataUrlArray.push({tabId:tabArray[i].id, dataUrl:dataUrl});

                    // switch to the next tab if there is one
                    if(tabArray[i+1] != undefined) {
                        photoTab(i+1);
                    }
                    else {
                        // if no more tabs, return to the original tab and fire callback
                        chrome.tabs.update(currentTab.id, {active:true}, function() {
                            callbackWithDataUrlArray(dataUrlArray);
                        });
                    }
                });
            });
        }
        photoTab(0);
    });
}

// get all tabs in the current window
captureWindowTabs(chrome.windows.WINDOW_ID_CURRENT, function(dataArray) {
    for(var i = 0; i < dataArray.length; ++i) {
        alert(dataArray[i].dataUrl); // log to the background page or popup
    }
});

相关问题