我目前在我的背景和内容中遇到了沟通问题。问题是他们可以沟通,但似乎是异步的。
让我告诉你我的代码。
yourToolbar.js
chrome.extension.sendRequest({getStatut : "none"}, function(response)
{
console.log('yourToolbar : ' + response.statut);
localStorage['activated'] = response.statut;
});
if (localStorage['activated'] == "show")
{
// injection
}
background.js
chrome.extension.onRequest.addListener(function(request, sender, sendResponse)
{
if(request.getStatut)
{
console.log('Background : ' + localStorage['activated']);
sendResponse({statut : localStorage['activated']});
}
else if(request.modifyToolbar)
{
if (request.modifyToolbar == "hideToolbar")
{
localStorage['activated'] = "hide";
}
}
});
真正的问题是,当我隐藏工具栏时,工具栏只会在1次刷新后消失。因此,似乎通信不是最新的......当我在控制台上打印“激活”的值时,它显示了良好的值,但显然yourtoolbar.js上的条件测试了之前的“激活”值< / p>
有人有想法吗?
编辑:一个奇怪的想法,就是如果我在条件完成之前添加一个警报就可以完美地运作......alert(ocalStorage['activated']);
if (ocalStorage['activated']== "show")
{
答案 0 :(得分:1)
Chrome和所有(?)API方法中的所有消息都是异步的。
所以你的toolbar.js应该是这样的:
chrome.extension.sendRequest({getStatut : "none"}, function(response)
{
console.log('yourToolbar : ' + response.statut);
localStorage['activated'] = response.statut;
//inside a callback
if (localStorage['activated'] == "show")
{
// injection
}
});