5

我是新手,我需要知道如何同时获取所有选项卡的屏幕截图,我使用了函数 chrome.tabs.captureVisibleTab 但作为参数窗口,我该怎么做?谢谢!

4

1 回答 1

5

您必须打开窗口中的每个选项卡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
    }
});
于 2012-05-15T15:47:20.900 回答