我是新手,我需要知道如何同时获取所有标签的屏幕截图,我使用了chrome.tabs.captureVisibleTab函数,但作为参数窗口,我该怎么办?谢谢!< / p>
答案 0 :(得分:3)
您必须使用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
}
});