Я попробовал следующий код. В основном он делает снимок экрана со всех вкладок, открытых в текущем окне:
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]) {
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);
});
}
Когда я вызываю этот код из popup.html, открытого как веб-страница, он работает как положено (я запускаю это с помощью нажатия кнопки вpopup.html). Когда я вызываю его из расширения браузера, оно просто прерывается на первой выбранной вкладке. Есть идеи, почему это так? Я не могу поделиться ошибками, так как отладчик закрывается при вызове из расширения.
Дополнительно, есть ли способ достичь желаемого результата без необходимости визуального переключения вкладок?