我面临的问题非常有趣。我已经设置了我的背景和弹出窗口之间的通信,它完全正常,直到我试图访问chrome.tabs.query回调中的数据。
请问你可能会出现什么问题?
background.js
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.greeting === 'getTabs') {
chrome.tabs.query({},function(tabs){
sendResponse(tabs);
});
}
if (request.greeting === 'test') {
sendResponse('test-string');
}
});
popup.js
$(document).ready(function(){
$('button').on('click', function(){
chrome.extension.sendMessage({greeting: 'getTabs'}, function(response){
console.log(response);
});
chrome.extension.sendMessage({greeting: 'test'}, function(response){
console.log(response);
});
});
});
我调试了background.js部分,我得到了标签的arra,但由于某种原因它没有作为响应发送,即使sendResponse(tabs)在回调函数中。另外,如果我设置一个静态字符串,比如'apple',它也不会发送它。
答案 0 :(得分:0)
我最终找到了我的问题的答案,虽然我无法理解,为什么它会解决问题。
background.js
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.greeting === 'getTabs') {
chrome.tabs.query({},function(tabs){
sendResponse(tabs);
});
}
if (request.greeting === 'test') {
sendResponse('test-string');
}
return true;
});
我必须返回true,否则chrome messaging.js中的端口为null。