我在Chrome扩展程序中有以下代码
devtoolsPanel.js
chrome.runtime.sendMessage({
name: 'executeScript',
tabId: chrome.devtools.inspectedWindow.tabId
}, function(response) {
if(response != undefined){
console.log(response.message);
}
});
background.js
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
try {
if (message.name == "executeScript") {
chrome.tabs.executeScript(message.tabId, {
code: 'document.body.style.backgroundColor="red"'
}, function() {
sendResponse({"message":"script executed"});
});
}
} catch (e) {
sendResponse({
"exceptionD": "" + e
});
}
});
我希望sendResponse()在执行内容脚本后被调用,但在chrome.tabs.executeScript()之后立即调用它,并且未定义。
我在内容脚本中使用的任何运行时API都会发生这种情况。我也尝试使用Localstore API,同样的事情发生了
例如在我的contentscript.js中我有以下代码
function readOptions(sendResponse) {
var options = {};
chrome.storage.local.get(null, function(items) {
sendResponse(items);
});
}
即使在这种情况下,在使用undefined的chrome.storage.local.get()之后立即调用sendResponse()。
有人可以告诉我这里发生了什么。