0

我目前在我的背景和内容脚本之间的沟通方面存在问题。问题是它们可以通信,但似乎是异步的。

让我告诉你我的代码。

你的工具栏.js

chrome.extension.sendRequest({getStatut : "none"}, function(response) 
{
    console.log('yourToolbar : ' + response.statut);
    localStorage['activated'] = response.statut;
});

if (localStorage['activated'] == "show") 
{
        // injection
}

背景.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 上的条件测试了“激活”的先前值

有人有想法吗?

编辑:一个奇怪的想法是,如果我在条件之前添加一个警报,它会完美地工作......

alert(ocalStorage['activated']);
        if (ocalStorage['activated']== "show") 
        {
4

1 回答 1

1

All messaging in Chrome and all(?) API methods are asynchronous.

So your toolbar.js should look like:

chrome.extension.sendRequest({getStatut : "none"}, function(response) 
{
    console.log('yourToolbar : ' + response.statut);
    localStorage['activated'] = response.statut;

    //inside a callback
    if (localStorage['activated'] == "show") 
    {
            // injection
    } 
});
于 2011-02-28T15:59:48.523 回答