【发布时间】:2015-06-21 18:05:21
【问题描述】:
假设我的 Chrome 扩展程序的后台页面中有以下代码。
var opts;
chrome.storage.local.get(options, function(result) {
opts = result[options];
});
chrome.runtime.onMessage.addListener(function(request, sender, response) {
if (request.message === 'getOpts')
response(opts);
});
在我的内容脚本中,我通过消息传递访问opts。
chrome.runtime.sendMessage({'message': 'getOpts'}, function(response) {
console.log(opts);
});
是否可以保证在内容脚本运行之前定义选项?例如,在启动浏览器时,后台页面会运行,想必对chrome.storage.local.get的回调会被添加到后台页面的消息队列中。 Chrome 会在注入内容脚本之前完成该队列的处理吗?
我可以从内容脚本中调用 chrome.storage.local.get,但我的问题更笼统,因为我的后台页面中有额外的异步处理。目前,我的内容脚本会检查后台页面以确保一切就绪(使用间隔继续检查),但我不确定是否有必要进行此类检查。
【问题讨论】:
-
然后向我们展示您传递的信息。否则很难回答。
-
嗨,Xan,我添加了显示消息传递的代码。
-
似乎无法保证。即使 Chrome 在加载内容脚本之前处理了后台脚本队列中的所有消息,在后台脚本运行完成时,对 chrome.storage.local.get 的回调可能还没有在队列中。跨度>
标签: javascript google-chrome-extension