クローム拡張機能を開発していて、非常に奇妙なバグに遭遇しました。私のコードはMac OSではうまく機能しますが、Windows版やLinux版のChromeでは動作しません。バージョンは同じです。さまざまなOSでの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);
});
});
});
};
更新: 私はこのコードで何をしたいのか - スクリーンショットとタブのURLを取り、私の拡張機能のページにそれを送信することです。ユーザーが内線のアイコンをクリックすると、2つのボタンがあるポップアップが開き、その内の1つがこの機能を起動します。
Mac OSではすべてが動作します - このコードはスクリーンショットを取得し、URLをタブで開き、アプリケーションで新しいタブを開き、そこでデータを送信します。 Linuxの場合&クロムのWindows版ではデータを送信しません。ポップアップのアイコンをクリックすると空白のタブが開きます。
役に立つと思われる内容を説明したい場合や、有益な回答が得られない場合があります。 – nwellcome
質問が更新されました – evindor
複数のWebKitブラウザで同様の問題が発生しました。 Chromeは動作し、Androidは動作しません。 –