Chrome.storage用于“新标​​签页” Chrome应用;记住复选框

时间:2018-10-27 15:42:18

标签: javascript html css google-chrome-app

我对编程很陌生,但是渴望学习。我正在尝试创建一个跟踪目标的应用程序(我不喜欢自己找到的目标,因此我想自己制定目标)。无论如何,这里都有要检查的复选框,以后我打开一个新选项卡时,我希望选中这些复选框。这是我的代码中的一小段:

<label class="container">Drink 2 liters of water
  <input type="checkbox" checked="checked">
  <span class="checkmark"></span>
</label>

如何使用chrome.storage函数记住我单击了此框?谢谢您的帮助!。

1 个答案:

答案 0 :(得分:1)

从高层次上讲,您希望在单击复选框或单击按钮时使用chrome.storage保存更改。

如果您希望每次单击复选框时都保存,则将侦听器绑定到复选框的change事件。然后,调用chrome.storage保存。

document.querySelectorAll('input[type="checkbox"]').forEach(elem=>{ //Get all input checkboxes
    elem.addEventListener('change',(event)=>{ //Add a change listener
        const key = event.target.name; //get the name value from the input element
        const value = event.target.checked; // has it been checked?
        chrome.storage.local.set({[key]: value}, ()=>  { //save it
            console.log('Value is set to ' + value);
        });
    })
})

保存按钮按下将类似。您将单击侦听器绑定到该按钮,然后在回调中选择所有复选框,然后将其循环以保存。

加载页面后,您需要获取所有已保存的值,并设置检查状态。

chrome.storage.local.get(['goal1','goal2'],(results)=>{ //Fetch goal1, goal2, goalN... from chrome.storage
    //.get returns a keyed object you can loop over.
    Object.keys(results).forEach((goal)=>{ 
        //Set the check state of each goal.
        document.querySelector(`input[name="${goal}"]`).checked = results[goal];
    })
})