我正在尝试在内容脚本和扩展名之间传递消息

这是我的内容脚本

chrome.runtime.sendMessage({type: "getUrls"}, function(response) {
  console.log(response)
});

在后台脚本中
chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if (request.type == "getUrls"){
      getUrls(request, sender, sendResponse)
    }
});

function getUrls(request, sender, sendResponse){
  var resp = sendResponse;
  $.ajax({
    url: "http://localhost:3000/urls",
    method: 'GET',
    success: function(d){
      resp({urls: d})
    }
  });

}

现在,如果我在getUrls函数中的ajax调用之前发送响应,则响应已成功发送,但是在ajax调用的成功方法中,当我发送响应时,它不发送响应,当我进入调试时,可以看到在sendResponse函数的代码内端口为null。

最佳答案

the documentation for chrome.runtime.onMessage.addListener :



因此,您只需要在对return true;的调用之后添加getUrls,以表明您将异步调用响应函数。

10-08 02:48