gpt4 book ai didi

javascript - 内容脚本未收到我发送的对象

转载 作者:行者123 更新时间:2023-12-03 11:53:40 25 4
gpt4 key购买 nike

我正在制作一个 chrome 扩展,我想从内容脚本向后台脚本发送一条消息,请求发送回的 var。像这样:

contentscript.js --> ask for var --> background.js
|
contentscript.js <-- give var <------------

这是文件:

// contentscript.js

'use strict';

function canGo() {
chrome.runtime.sendMessage({ message: 'go' }, function(response) {
return response.go;
});
}

console.log(canGo()); // undefined

// background.js

'use strict';

var go = false;

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.message == 'go') {
sendResponse({ go: go });
}
}
);

所以问题是函数 canGo 返回未定义。我找不到原因。感谢您的帮助!

最佳答案

chrome.runtime.sendMessage 是异步的。

您的函数 canGo() 将在发送消息后立即终止,并且稍后将异步调用回调。您不能立即使用响应,必须在回调中使用它。

function canGo() {
chrome.runtime.sendMessage({ message: 'go' }, function(response) {
console.log(response.go);
if(response.go) { /* ... */ }
else { /* ... */ }
});
}

关于javascript - 内容脚本未收到我发送的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25698248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com