Google chrome extension 后台发送消息时未加载内容\u脚本
在我的chrome扩展中,我的后台脚本将消息发送到作为页面一部分加载的content_脚本。 content_脚本似乎没有收到消息,我认为这是因为在后台脚本触发消息时没有加载它。如果我在发送消息之前在后台脚本中延迟5秒,那么它就可以工作了。在发送消息之前,是否有其他方法检查内容脚本是否准备就绪 显示Google chrome extension 后台发送消息时未加载内容\u脚本,google-chrome-extension,Google Chrome Extension,在我的chrome扩展中,我的后台脚本将消息发送到作为页面一部分加载的content_脚本。 content_脚本似乎没有收到消息,我认为这是因为在后台脚本触发消息时没有加载它。如果我在发送消息之前在后台脚本中延迟5秒,那么它就可以工作了。在发送消息之前,是否有其他方法检查内容脚本是否准备就绪 显示 "manfiest_version": 2, "content_scripts": [ { "matches" : [ "https://example.com/*" ], "js": ["
"manfiest_version": 2,
"content_scripts": [
{
"matches" : [ "https://example.com/*" ],
"js": ["content_scripts.js"]
}
],
background.js
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
console.log('sending msg to tab '+tabs[0].id);
chrome.tabs.sendMessage(tabs[0].id, {message: "hello"}, function(response) {});
});
content_script.js
chrome.runtime.onMessage.addListener(
function(msg, sender, sendResponse) {
console.log('content_script received msg');
}
);
“背景/事件”页面是一个单独的隐藏页面,在浏览器启动用户配置文件时运行。正如您所看到的,它与任何选项卡或内容脚本都不相关。只需从内容脚本启动消息传递。只有BG(background.js)知道何时向CS(content_脚本)发送内容,而不是相反。但也许你的意思是,我应该让CS先向BG发送一条消息,让它知道它已经准备好了,然后让BG在它准备好的时候做出响应或发送一条消息。我希望BG能够找到一种方法来检测CS是否准备好了。如果它没有收到响应,它可能会等待并再次发送。当然,您可以将代码放入函数中,然后在
响应
错误时重试。