2017-07-18 65 views
0

是我面對的是非常有趣的問題。我已經建立了我的背景和彈出窗口之間的通信,它工作得很好,直到我試圖訪問chrome.tabs.query回調中的數據。Chrome擴展彈出沒有收到標籤查詢響應

能否請您指教一下可能出在哪裏?

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部分,並且我得到了標籤的排列,但由於某種原因,它沒有作爲響應發送,即使sendResponse(tabs)在回調函數中。另外,如果我設置了一個靜態字符串,比如'apple',它也不會發送它。

回答

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端口爲空。

+2

這是一個[記錄功能](https://developer.chrome.com/extensions/runtime#event-onMessage)。 – wOxxOm