Как сохранить несколько выпадающих меню при перезапуске приложения? - PullRequest
0 голосов
/ 21 января 2019

У меня есть программа, которая имеет несколько раскрывающихся меню, и я запускаю ее как расширение Chrome без распаковки, но я не могу получить ни одно из раскрывающихся меню для сохранения после повторного открытия приложения.Как мне этого добиться?Я уже пытался некоторые решения, но они не работали.Раскрывающиеся списки представлены в табличном формате. (Примечание. Это не весь мой код, но, чтобы сделать его более простым, я включил только два из раскрывающихся списков).Спасибо!

<!--          <head>
          <link rel="stylesheet" href="styles.css">
          <script src="java.js"></script>
                 
              </head>  -->
 
 <body>
      <div class="imgcontainer">
    <img src="images.jpeg" alt="Avatar" class="image">
  </div>
    <table id="t01">
<tr>
    <th>Name</th>
    <th>ID</th>  
    <th>In Use</th>
    <th>Quantity</th>
    <th>Connected to...
      *Based on OUTPUT*</th>
    <th>Comment</th>
  </tr>
<tr><td id="master01">1/4 Inch Audio Cables</td>
<td>1-2</td>
<td>--</td>
<td>2</td>
<td><select align="center" id="master01dropdown">
  <option value="option01">option01</option>
  <option value="option02">option02</option>
  <option value="option03">option03</option>
  <option value="option04">option04</option>
  <option value="option05">option05</option>
  <option value="option06">option06</option>
  <option value="Null">Null</option>
  <option value="Not Defined">Not Defined</option>
  <option value="Not in Use">Not in Use</option>
 </select></td>
<td></td>
    </tr>
    <tr><td align="center" id="cable01">6 feet</td>
<td>1</td>
<td><input align="center" checked type="checkbox" name="void" value="In use"><br></td>
<td>1</td>
<td><select id="cable01dropdown">
  <option value="option01">option01</option>
  <option value="option03">option02</option>
  <option value="option03">option03</option>
  <option value="option04">option04</option>
  <option value="option06">option05</option>
  <option value="option07">option06</option>
  <option value="Null">Null</option>
  <option value="Not Defined">Not Defined</option>
  <option value="Not in Use">Not in Use</option>
 </select></td>
<td></td>
I added the suggested code and it still will not work. *Note: I am not very good with JavaScript.*

    chrome.storage.sync.set({ items: 'master01,cable01,cable02'});
chrome.storage.sync.get('items', function(data) {
     var items = data.items.split(',');
     items[0] => (master01)
     items[1] => (cable01)
     items[2] => (cable02)
});

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Я подробно расскажу, как сохранить и загрузить пример меню опций, содержащего текстовое поле и флажок.В вашем примере вы захотите использовать document.getElementById('master01dropdown').value при сохранении.

Настройка

Сначала создайте файл options.html в корневом каталоге проекта, содержащий вашу форму.

Далее, убедитесь, что эта страница параметров зарегистрирована в вашем manifest.json:

"options_ui": {
    "page": "options.html",
    "chrome_style": true
}

В нижней части вашего options.html, перед </body>, включите файл JavaScript:

<script src="js/options.js"></script>

Ваша форма также должна включать в себя кнопку «Сохранить» где-нибудь с идентификатором save:

<button id="save">Save</button>

Сохранение

Внутри файла /js/options.js, зарегистрируйте save() функция, запускаемая при нажатии кнопки сохранения:

document.getElementById('save').addEventListener('click', save);

Ваша функция save() должна использовать Chrome Storage для сохранения каждого элемента из вашей формы.Например, чтобы сохранить текстовое поле и флажок:

function save() {
    var sitesToSave = document.getElementById('sites').value;
    var displayPopup = document.getElementById('popup').checked;
    chrome.storage.sync.set({
        sites: sitesToSave,
        popup: displayPopup
    }, displaySavedMessage);
}

Загрузка

Внутри вашего файла /js/options.js снова зарегистрируйте функцию load() при загрузке формы:

document.addEventListener('DOMContentLoaded', load);

Теперь установите эти поля формы из ранее сохраненных значений (и укажите значения по умолчанию), снова используя Chrome Storage:

function load() {
    chrome.storage.sync.get({
        sites: 'supersecretsite.com',
        popup: false
    }, function(items) {
        document.getElementById('sites').value = items.sites;
        document.getElementById('popup').checked = items.popup;
    });
}

Готово!Теперь настройки могут быть сохранены и загружены.

Весь код в этом ответе взят из очень простого примера расширения Chrome , которое я сделал, который также сопровождается подробным учебником .

0 голосов
/ 21 января 2019

Хранить элементы в хранилище Chrome:

Предположим, что вы сохраняете элементы, разделенные запятыми

chrome.storage.sync.set({ items: 'item1,item2,item3,item4'});

, извлекайте их, используя:

chrome.storage.sync.get('items', function(data) {
     var items = data.items.split(',');
     // items[0] => item1
     // items[1] => item2
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...