Я занимаюсь разработкой расширения для Chrome и столкнулся с очень странной ошибкой - мой код хорошо работает в Mac OS, но не работает в версиях Chrome для Windows и Linux.Версии одинаковы.
function captureAllScreen() {
chrome.windows.getCurrent(function(w) {
chrome.tabs.captureVisibleTab(w.id, {"format":"png"}, function(response) {
var image = response;
var url;
chrome.tabs.getSelected(w.id, function(response) {
url = response.url;
});
var viewTabUrl = [chrome.extension.getURL('app.html'),
'?id=', id++].join('');
chrome.tabs.create({url: viewTabUrl}, function(tab) {
var targetId = tab.id;
var addSnapshotImageToTab = function(tabId, changedProps, tab) {
if (tabId != targetId || changedProps.status != "complete") {
return;
};
chrome.tabs.onUpdated.removeListener(addSnapshotImageToTab);
var views = chrome.extension.getViews();
for (var i = 0; i < views.length; i++) {
var view = views[i];
if (view.location.href == viewTabUrl) {
view.twm_Draw.sendScreen(image, url); //Application-specific method
break;
}
}
window.close();
};
chrome.tabs.onUpdated.addListener(addSnapshotImageToTab);
});
});
});
};
Обновление: что я хочу сделать с этим кодом - это сделать снимок экрана и URL-адрес вкладки и отправить его на страницу моего расширения.Когда пользователь нажимает на значок моего расширения - он открывает всплывающее окно с двумя кнопками, одна из которых запускает эту функцию.
В Mac OS все работает - этот код делает снимок экрана, URL-адрес вкладки, открывает новую вкладку с моим приложениеми отправляет данные туда.В версиях Chrome для Linux и Windows данные не отправляются, после нажатия на значок во всплывающем окне вы просто открываете пустую вкладку.