【问题标题】:Chrome extension popup not receiving tabs query response [duplicate]Chrome 扩展弹出窗口未收到选项卡查询响应 [重复]
【发布时间】:2017-07-18 20:05:16
【问题描述】:

我面临的问题很有趣。我已经在后台和弹出窗口之间建立了通信,它工作得非常好,直到我尝试访问 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 部分,得到了选项卡的排列,但由于某种原因,它没有作为响应发送,即使 sendResponse(tabs) 在回调函数中。另外,如果我设置一个静态字符串,比如'apple',它也不会发送它。

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

    我最终找到了我的问题的答案,虽然我不能完全理解,为什么它解决了这个问题。

    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 messinging.js 中的端口为空。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-11
    • 2016-02-08
    • 1970-01-01
    • 2022-01-05
    • 2011-08-07
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多