JavaScript Chrome扩展程序消息传递:未发送响应

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

这是我的内容脚本

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

回答:

从文档中chrome.runtime.onMessage.addListener

当事件侦听器返回时,此函数将变为无效,除非您从事件侦听器返回true表示您希望异步发送响应(这将使消息通道向另一端开放,直到调用sendResponse为止)。

因此,您只需要return true;在调用后添加getUrls即可指示将异步调用响应函数。

以上是 JavaScript Chrome扩展程序消息传递:未发送响应 的全部内容, 来源链接: utcz.com/qa/418692.html

回到顶部