我是新手,我需要知道如何同时获取所有选项卡的屏幕截图,我使用了函数 chrome.tabs.captureVisibleTab 但作为参数窗口,我该怎么做?谢谢!
问问题
2842 次
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 回答