我正在开发一个chrome扩展程序,我遇到了一个非常奇怪的错误 - 我的代码在Mac OS上运行良好,但在Windows和Linux版本的Chrome上无效。版本是一样的。
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);
});
});
});
};
更新: 我想用这段代码做什么 - 是截取屏幕截图和标签页面并将其发送到我的扩展程序页面。当用户点击我的扩展程序图标时 - 它会打开一个带有两个按钮的弹出窗口,其中一个按钮会激活此功能。
在Mac Os中,一切正常 - 此代码采用屏幕截图,标签网址,用我的应用程序打开新标签并在那里发送数据。在Linux&amp; Windows版本的chrome不发送数据,点击弹出窗口中的图标后,您只需打开一个空白标签。
答案 0 :(得分:0)
我认为这部分可能会导致问题:
var url;
chrome.tabs.getSelected(w.id, function(response) {
url = response.url;
});
//using url
其余代码应该包含在回调函数中,否则无法保证执行顺序。
答案 1 :(得分:0)
我猜它只支持Mac,无论它做什么:
view.twm_Draw.sendScreen(image, url); //Application-specific method
我不了解Unix,但在Windows上,您只能使用像Google extension for screen capture这样的NPAPI插件获取屏幕截图。