Files
chrome-extensions-samples/api-samples/storage/stylizr/options.js
Xuezhou Dai 3f07ceec66 Add storage sample (#947)
* Add storage sample `stylizr`

* Update description

* Update api-samples/storage/stylizr/README.md

Co-authored-by: Joe Medley <jmedley@google.com>

* Clear previous timer if message called twice

* Remove innerHTML

* Update tips

* Remove IIFE

---------

Co-authored-by: Joe Medley <jmedley@google.com>
2023-08-21 11:34:27 +01:00

57 lines
1.6 KiB
JavaScript

// Store CSS data in the "local" storage area.
const storage = chrome.storage.local;
// Get at the DOM controls used in the sample.
const resetButton = document.querySelector('button.reset');
const submitButton = document.querySelector('button.submit');
const textarea = document.querySelector('textarea');
// Load any CSS that may have previously been saved.
loadChanges();
submitButton.addEventListener('click', saveChanges);
resetButton.addEventListener('click', reset);
async function saveChanges() {
// Get the current CSS snippet from the form.
const cssCode = textarea.value;
// Check that there's some code there.
if (!cssCode) {
message('Error: No CSS specified');
return;
}
// Save it using the Chrome extension storage API.
await storage.set({ css: cssCode });
message('Settings saved');
}
function loadChanges() {
storage.get('css', function (items) {
// To avoid checking items.css we could specify storage.get({css: ''}) to
// return a default value of '' if there is no css value yet.
if (items.css) {
textarea.value = items.css;
message('Loaded saved CSS.');
}
});
}
async function reset() {
// Remove the saved value from storage. storage.clear would achieve the same
// thing.
await storage.remove('css');
message('Reset stored CSS');
// Refresh the text area.
textarea.value = '';
}
let messageClearTimer;
function message(msg) {
clearTimeout(messageClearTimer);
const message = document.querySelector('.message');
message.innerText = msg;
messageClearTimer = setTimeout(function () {
message.innerText = '';
}, 3000);
}