【问题标题】:Option issue using chrome.storage.sync.get for first time user首次用户使用 chrome.storage.sync.get 的选项问题
【发布时间】:2021-04-09 00:52:07
【问题描述】:
chrome.storage.sync.get('savedItem', function (result) {

    //some if else condition for result.savedItem here
    myResult = result.savedItem;
    });

$('p').val(myResult);

使用上面的代码,我得到了一个未定义的,因为我的选项页面中没有保存第一次用户的设置。我试图为 myResult 设置一个默认值,例如if(result.savedItem == undefined) myResult = '';,但我仍然没有定义。为什么?

【问题讨论】:

    标签: google-chrome-extension


    【解决方案1】:

    同时发布 2 个问题。

    1) 您可以通过提供字典来为不在存储中的值设置默认值:

    chrome.storage.sync.get({'savedItem' : 'myDefault'}, function (result) {
      // result.savedItem is the saved value or 'myDefault'
    });
    

    2) 最大的问题是不了解异步代码的工作原理。

    $('p').val(myResult); 在分配myResult 之前被执行,因为chrome.storage.sync.get 立即返回,function(result){...} 稍后被调用。

    已经有关于这方面的问题了,看看thisthis

    【讨论】:

    【解决方案2】:

    使用 chrome 存储更改 - Refer this link

    示例代码:

    chrome.storage.onChanged.addListener(函数(更改,命名空间){ for (var key in changes) { var storageChange = 更改[键]; console.log('命名空间 "%s" 中的存储键 "%s" 已更改。' + '旧值为 "%s",新值为 "%s"。', key, namespace, storageChange.oldValue, storageChange.新值); } });

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 2017-10-23
      • 1970-01-01
      • 2019-10-01
      相关资源
      最近更新 更多