Google chrome extension 后台发送消息时未加载内容\u脚本

Google chrome extension 后台发送消息时未加载内容\u脚本,google-chrome-extension,Google Chrome Extension,在我的chrome扩展中,我的后台脚本将消息发送到作为页面一部分加载的content_脚本。 content_脚本似乎没有收到消息,我认为这是因为在后台脚本触发消息时没有加载它。如果我在发送消息之前在后台脚本中延迟5秒,那么它就可以工作了。在发送消息之前,是否有其他方法检查内容脚本是否准备就绪 显示 "manfiest_version": 2, "content_scripts": [ { "matches" : [ "https://example.com/*" ], "js": ["

在我的chrome扩展中,我的后台脚本将消息发送到作为页面一部分加载的content_脚本。 content_脚本似乎没有收到消息,我认为这是因为在后台脚本触发消息时没有加载它。如果我在发送消息之前在后台脚本中延迟5秒,那么它就可以工作了。在发送消息之前,是否有其他方法检查内容脚本是否准备就绪

显示

"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是否准备好了。如果它没有收到响应,它可能会等待并再次发送。当然,您可以将代码放入函数中,然后在
响应
错误时重试。