我正在构建Chrome扩展程序,并尝试从chrome.tabs.captureVisibleTab()
内部向我的事件background.js页面发送消息。由于某种原因,邮件不会发送到我的内容脚本......
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);
});
}
});
我的manifest.json
允许正确的权限以允许此消息传递发生。当我尝试使用sendResponse()
之外的chrome.tabs.captureVisibleTab()
传递消息时,消息正确传递,我可以从内容脚本访问它。知道为什么这不通过吗?
更新:alert(sendResponse);
证明chrome.tabs.captureVisibleTabs()
有权访问sendResponse
,因为该对象已正确显示在提醒消息中。
答案 0 :(得分:4)
我挖到了解压缩扩展程序的控制台(显然它与常规扩展程序的控制台不同:Where to read console messages from background.js in a Chrome extension?)并且如果chrome.runtime.onMessage.addListener
被调用,则表示sendResponse
需要返回true在函数中的回调内部。它奏效了!