我正在创建一个用于捕获网站屏幕截图的 Google Chrome 扩展程序,并且我需要 popup.js
才能向我的 background.js
发送消息。我不断收到此错误:响应 storage.get 时出错:TypeError:无法读取未定义的属性“addListener”
。
这是我当前的background.js代码:
chrome.storage.sync.get({
extensionBehavior: 'onClick',
logIn: false
}, function(items) {
if(items.extensionBehavior == 'onClick'){
// When the extension icon is clicked, send a message to the content script
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (!request.message){
var img;
chrome.tabs.captureVisibleTab(null, {}, function(dataURL){
img = dataURL;
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {"message": tabs[0].url, "statusCode": 0, "image": img, "note" : request.note}, function(response){});
});
});
}
});
}
else {
/* ... */
}
});
我的 popup.js 正在正确发送消息,但我的后台脚本一直给我同样的错误。 chrome.runtime
API 在 chrome.storage.sync.get
内部不可用吗?在添加该方法之前,chrome.tabs
API 工作正常,并且弹出窗口肯定正在发送消息(我测试了它)。
最佳答案
问题是我使用 popup.js 发送 tabs.sendMessage
而不是 runtime.sendMessage
。选项卡 API 将消息发送到内容脚本,而运行时 API 可以在任何地方发送消息。
关于javascript - 响应 storage.get 时出错 : TypeError: Cannot read property 'addListener' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38315115/