1

私は Chrome 拡張機能を構築しており、 内からイベント background.js ページにメッセージを送信しようとしていますchrome.tabs.captureVisibleTab()。何らかの理由で、メッセージがコンテンツ スクリプトに送信されません...

chrome.runtime.onMessage.addListener(
 function(request, sender, sendResponse) {
 var responseObj = new Object();
 if(request.screenshotRequest == true){
  chrome.tabs.captureVisibleTab({ format: "png"}, function(dataUrl){
    responseObj.screenshotRequest = dataUrl;
    alert(sendResponse);
    sendResponse(responseObj);
   });
  }
});

Mymanifest.jsonは、このメッセージの受け渡しを許可する正しいアクセス許可を許可します。sendResponse()メッセージの外側を使用してメッセージを渡そうとするとchrome.tabs.captureVisibleTab()、メッセージが正しく渡され、コンテンツスクリプトからアクセスできます。これが通過しない理由は何か分かりますか?

UPDATE :オブジェクトがアラート メッセージに正しく表示されているため、アクセス権がalert(sendResponse);あることを証明します。chrome.tabs.captureVisibleTabs()sendResponse

4

1 に答える 1

4

アンパックされた拡張機能のコンソールを掘り下げました (明らかに、通常の拡張機能のコンソールとは異なります: Chrome 拡張機能で background.js からコンソール メッセージを読み取る場所は? ) 。コールバック内で呼び出されたchrome.runtime.onMessage.addListener場合は true を返す必要があるとのことsendResponse関数で。出来た!

于 2013-08-15T17:46:39.503 に答える