Как сохранить изменения из всплывающего окна расширения Chrome после его закрытия с помощью хранилища - PullRequest
1 голос
/ 29 марта 2019

Я пытаюсь создать расширение Chrome для списка задач, в котором используется всплывающее окно, в которое пользователь может вводить текст (элемент списка своих задач), и оно добавляется в список.Я могу добавлять и удалять элементы списка и вносить изменения во всплывающее окно, но я хочу сохранить их данные, чтобы, когда они закрывают и открывают всплывающее окно, их элементы списка задач все еще были там.Я не слишком уверен, как это сделать, так как я новичок в расширениях javaScript и chrome.Я считаю, что вам нужно использовать хранилище, но я не слишком уверен, как это реализовать.

popup.html

<div class="container">
  <h2 class="title">Add Items</h2>
  <form id="addForm">
    <input type="text" id="item">
    <input type="submit" value="Submit">
  </form>
  <h2 class="title">List</h2>
  <ul id="items" class="list-group">
    <li class="list-group-item">
      <button class="delete">X</button>
      Click X button to delete item, type item in submit bar to add item
    </li>
  </ul>
</div>

popup.js

var form = document.getElementById('addForm');
var itemList = document.getElementById('items');

//form submit event
form.addEventListener('submit', addItem);
//delete event
itemList.addEventListener('click', removeItem);

//add item
function addItem(e) {
    e.preventDefault();

    //create delete button element
    var deleteBtn = document.createElement('button');

    //add classes to btn
    deleteBtn.className = "delete";

    //append text node
    deleteBtn.appendChild(document.createTextNode('X'));

    //get input value
    var newItem = document.getElementById('item').value;

    //create li element
    var li = document.createElement('li');

    //add class
    li.className = 'list-group-item';

    //append button to li
    li.appendChild(deleteBtn);

    //add text node with input value
    li.appendChild(document.createTextNode(newItem));

    //append li to list
    itemList.appendChild(li);

    savaData();

}

//remove item
function removeItem(e) {
    if (e.target.classList.contains('delete')) {
        var li = e.target.parentElement;
        itemList.removeChild(li);
    }
}

1 Ответ

1 голос
/ 29 марта 2019

Вам нужно будет сохранить данные в хранилище.Попробуйте localStorage , поскольку он прост в использовании.

Вы можете комбинировать его с JSON.stringify(<object-here>) и JSON.parse(<string-here>) для сохранения объектов.

Пример:

var my_data = {...};

// Save them
localStorage.setItem('my_date', JSON.stringify(my_data));

// Load them
my_data = JSON.parse(localStorage.getItem('my_date'));

Вам придется загружать их из localStorage при загрузке страницы и сохранять их каждый раз, когда вы меняете данные.

...