是否可以从弹出窗口更改Chrome扩展程序的设置?

时间:2016-02-15 15:52:42

标签: javascript google-chrome google-chrome-extension

我目前正在撰写Google Chrome扩展程序,但我遇到某些功能问题。我想这样做,以便用户可以使用chrome.storage.sync通过弹出菜单启用/禁用扩展程序。但是,我无法让自己的想法发挥作用。

我的代码:

// popup.js
function save_options () {
  var enabled = document.getElementById('enabled').checked

  chrome.storage.sync.set({
    enabled: enabled
  })
}

function restore_options () {
  chrome.storage.sync.get({
    // placeholder value
    enabled: false
  }, function (items) {
    // sub in the real value if it exists
    document.getElementById('enabled').checked = items.enabled
  })
}
<div id="container">
    <div id="bigButton">
        <div id="status">
            <!-- should to "plugin is disabled" when disabled -->
            <h1>Plugin is enabled.</h1>
        </div>
        <input type="checkbox" name="enabled" id="enabled"></input>
    </div>
    <div id="refresh">
        <img id="reload" src="img/refresh.png">
    </div>
</div>

我怎样才能修复未写入的设置?

1 个答案:

答案 0 :(得分:1)

我认为你的问题不在你的save方法中,而是get,作为一个值,它不接收对象,而是接收字符串或字符串数​​组。继续尝试以下内容:

function restore_options () {
    chrome.storage.sync.get('enabled', function (items) {
        //...
    })
}

此处的结果应该是对象items将包含:

{ "enabled": true }

此外,您可能希望防范吸气剂,并使用:

document.getElementById('enabled').checked = !!items.enabled;

这可以确保您设置布尔值。