google-chrome - chrome 扩展 chrome.storage.local 默认设置
问题描述
我正在为我的工作场所开发 Chrome 扩展程序,并且在安装时使用事件 chrome.runtime.onInstalled 在 chrome.storage.local 中创建了许多默认设置。
但是,我很确定这意味着每当我推送新版本的扩展程序时,用户的设置都会被默认设置覆盖。我发现 Object.assign 方法看起来可以解决这个问题,但我无法弄清楚如何在不诉诸实际更新扩展的情况下测试我的代码。
卸载扩展的解压版本似乎会导致其 chrome.storage.local 密钥被破坏(我可能错了),所以我无法在重新安装时验证它是否会保留我之前更改的任何设置。
我当前的“onInstalled”代码如下所示:
chrome.runtime.onInstalled.addListener(function() {
chrome.storage.local.get(["options"], function(r){
let defaults = {
option1: 2000,
option2: true,
option3: false,
option4: ""
},
current = r.options,
newSettings = Object.assign(defaults,current);
chrome.storage.local.set({
options: newSettings
});
});
});
一个后续问题:是否有必要为我的选项命名,或者是否设置了 chrome.storage.local 以便不同扩展名中的同名设置不会相互干扰?
解决方案
推荐阅读
- java - 带有安全管理器的 Tomcat 9.0 在 Windows 上报告访问被拒绝
- javascript - Internet Explorer 11 在 Post Request 中向 Typescript Map 添加值
- java - 在android中,选中RecyclerView中的复选框,会自动选中其他一些复选框
- ruby-on-rails - 由于依赖关系,无法运行捆绑安装
- javascript - 将表单验证功能分解为更小的功能
- c++ - 如何将值传递给 lambda 函数
- javascript - 反应单选按钮更新状态
- java - 我只需要来自 forEach 的一个地址,但我在 forEatch 中的 JSTL 提交按钮中获得了多个地址?
- mongodb - MongoDB:没有$unwind的嵌入式文档数组中的字段比较?
- javascript - AngularJS 部分中的 Angular Hybrid 性能问题 - Mousemove 导致 100% CPU 负载