保存并使用 chrome.sync.storage.get() 中的值



我正在Chrome上写一个小扩展,我正在尝试使用chrome.storage。在我的选项页面上,我保存了一些我将在content_script上获得的信息:

options.js

function save_options() {
      var color = document.getElementById('color').value;
      chrome.storage.sync.set({
        favoriteColor: color
      }, function() {
        console.log("Color saved");
      });
    }

但是我在content_script.js上使用这些信息时遇到问题。我试过了:

    var color = null;
    chrome.storage.sync.get('favoriteColor', function(item){
        color = item.favoriteColor;
        //alert(color); //Here works;
});
alert(color); // here doesn't work

chrome.storage API是异步的,这意味着它甚至在定义变量颜色之前就执行了警报,这就是为什么你总是没有定义。您需要等到 get 方法完成。您可以在content_script.js中设置仅在定义颜色后执行的回调函数:

    var color = null;
        chrome.storage.sync.get('favoriteColor', function(item){
            color = item.favoriteColor;
            alertColor(color);
    });
    function alertColor(color){
        alert(color);
    }

最新更新