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

标签 javascript google-chrome local-storage

我正在 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 是异步的,这意味着即使在定义变量 color 之前它也会执行警报,这就是为什么你总是得到未定义的原因。您需要等待 get 方法完成。您可以在 content_script.js 中设置回调函数,该函数仅在定义颜色后执行:

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

    function alertColor(color){
        alert(color);
    }

关于javascript - 保存并使用 chrome.sync.storage.get() 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44080115/

相关文章:

javascript - 如何阻止 google maps api v3 在北极上方或南极下方的灰色区域中平移?

javascript - Angular Http Get 在 Chrome/Safari 与 Firefox 中返回不同

javascript - 如何使用 backbone.localStorage 获取过滤结果?

html - 仅将 WebWorker 用于 LocalStorage?

javascript - 当标签值改变时如何使用jquery事件?

javascript - 无法使用 JQuery 更改 z-index

javascript - 如何防止提交表单后恢复到上一个​​Tab

javascript - 无法将 jquery 文件添加到 chrome 扩展

c++ - 将数据从 HTML5 应用程序传输到在客户端上下文中运行的 native 应用程序

objective-c - localStorage 不存在于 OSX 应用程序中 (Xcode 4.3)