0

Я новичок в программирование и я строй простой надстройки для Firefox, но я с помощью веб-расширения, моя страница опций имеет несколько проверки коробуСохранение и восстановление webextensions параметры страница

мне нужно сохранить значение из этих флажков, а затем восстановить их, код примера оценен.

function saveOptions(e) { 
 
    e.preventDefault(); 
 
    browser.storage.local.set({ 
 
    box1: document.querySelector("#box1").checked 
 
    }); 
 
} 
 

 
function restoreOptions() { 
 

 
\t var getting = browser.storage.local.get("box1"); 
 

 
    function setCurrentChoice(result) { 
 
    document.querySelector("#box1").checked = result.box1 || false 
 
    } 
 

 
    function onError(error) { 
 
    console.log(`Error: ${error}`); 
 
    } 
 

 
    
 

 
    getting.then(setCurrentChoice, onError); 
 

 
} 
 

 
document.addEventListener("DOMContentLoaded", restoreOptions); 
 
document.querySelector("form").addEventListener("submit", saveOptions);
<form> 
 
<p><label>Box1<input id="box1" type="checkbox" /></label></p> 
 
<p><label>Box2<input id="box2" type="checkbox" /></label></p> 
 
<p><label>Box3<input id="box3" type="checkbox" /></label></p> 
 
<p><label>Box4<input id="box4" type="checkbox" /></label></p> 
 
<p><label>Box5<input id="box5" type="checkbox" /></label></p> 
 
<p><button type="submit">Save</button></p> 
 
</form> 
 
<script src="options.js"></script>

код я получил из примера Firefox, работает в сохранении стоимости одной флажка, но как я сохранить и восстановить все значения другого ящика?

+0

Связанный/возможный дубликат [Полностью потерянный о том, как сохранить содержимое окна всплывающего окна расширения Chrome] (http://stackoverflow.com/questions/41284528/completely-lost-on-how-to-save-chrome-extension-popup -window-контент). – Makyen

+0

Это поможет, если вы [править] вопрос, чтобы добавить свой * manifest.json *. – Makyen

+0

@Makyen это не дубликат, но я буду изучать этот пост, может быть, я найду что-то полезное, и мой манифест json, не имеет ничего конкретного, только он просит хранить в качестве разрешения. – Cyb3rHac3r

ответ

0

Это то, что я использую. Мое дополнение также использует только флажки в опциях. Как и в вашем примере, параметры идентифицируются идентификатором элемента, поэтому включение HTML будет избыточным. У меня нет кнопки сохранения; изменения записываются в реальном времени, когда параметры отмечены или сняты. Это в значительной степени скопировано из онлайн-документации для этой функции. Обратите внимание, что этот вариант использует jQuery.

// see https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Implement_a_settings_page 

// if one of the checkboxes is clicked, store the new value of the 
// corresponding parameter: 
$("input").click(function() { 
    var setting = {}; 
    setting[$(this).attr("id")] = $(this).get(0).checked; 
    chrome.storage.local.set(setting); 
}); 

function restoreOptions() { 
// For each checkbox, see if stored value of setting has changed 
$("input").each(function() { 
    var id = $(this).attr("id"); 
    chrome.storage.local.get(id, function (setting) { 
    if (Object.keys(setting).length) { 
     $("#"+id).get(0).checked = setting[id] ? "checked" : undefined; 
    } 
    else { 
     // This block runs only the first time the settings page is opened. 
     init = {}; 
     init[id] = true; 
     chrome.storage.local.set(init); 
    } 
    }); 
}); 
} 

document.addEventListener("DOMContentLoaded", restoreOptions); 

Возможно, что, как предлагает @Mayken, ваша проблема может быть с manifest.json. The example in the documentation инструктирует поместить файл options.html в каталог с настройками и объявит это в файле manifest.json, установив options_ui.page в "options.html". Я обнаружил, что должен был записать его как "settings/options.html", чтобы заставить его работать.

+0

Спасибо за это, Мне нравится ваш подход к экономии в реальном времени, но я получаю сообщение об ошибке «SyntaxError: missing» «когда я использую ваш код – Cyb3rHac3r

+0

Извините, исправлено. – Lori

+0

Hey @Lori Спасибо за это, но я все равно получаю «SyntaxError: missing» », и добавляет) просто продолжает выскакивать еще одну ошибку, например, цикл или что-то еще, я буду продолжать пытаться исправить это, но, возможно ли это для вас один раз проверить этот код и посмотреть, нет ли чего-то, чего я не вижу? – Cyb3rHac3r

 Смежные вопросы

  • Нет связанных вопросов^_^