screenshot of all tabs chrome extension

google-chrome, google-chrome-extension, javascript

Solution

You'll have to bring up each tab in the window with `tabs.update` and capture it.

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
    }
});

Problem

I'm new, I need to know how to get screenshots of all the tabs at the same time, I've used the function chrome.tabs.captureVisibleTab but as a parameter window, how can I do?Thanks!

Original source