Расширение Chrome - флажок ввода установлен по умолчанию

Я разработал расширение для Chrome и добавил переключатель включения/выключения для управления внедрением сценариев контента.

В моем popup.html следующий элемент div был добавлен с флажком:

<div class="onoffswitch">
<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" checked>
<label class="onoffswitch-label" for="myonoffswitch">
    <span class="onoffswitch-inner"></span>
    <span class="onoffswitch-switch"></span>
</label>

The popup.js is setting the 'onoffswitch' selection in chrome storage as follows:

$(document).ready(function() {
$('#myonoffswitch').on('change', function(e) {

    chrome.storage.sync.set({
        'myonoffswitch': ($(this).is(":checked"))
    }, function() {});
})
chrome.storage.sync.get('myonoffswitch', function(storage) {
    $('#myonoffswitch').prop('checked', (storage.myonoffswitch == true));
})

$('#myonoffswitch2').on('change', function(e) {

    chrome.storage.sync.set({
        'myonoffswitch2': ($(this).is(":checked"))
    }, function() {});
})
chrome.storage.sync.get('myonoffswitch2', function(storage) {
    $('#myonoffswitch2').prop('checked', (storage.myonoffswitch2 == true));
});

})

Я изо всех сил пытаюсь включить «onoffswitch» по умолчанию при первоначальной установке расширения. Всякий раз, когда добавляется расширение, «onoffswitch» выключается, несмотря на объявление «checked» в поле «checkbox» в разделе «popup.html».

Спасибо, Идо.


person iDog    schedule 16.10.2016    source источник
comment
Если я вас правильно понимаю, это не сработает: chrome.storage.sync.get('myonoffswitch', function(storage) { $('#myonoffswitch').prop('checked', (typeof storage.myonoffswitch == = undefined || storage.myonoffswitch == true)); })   -  person    schedule 16.10.2016
comment
В основном то, что я делаю, это если оно не определено, поэтому по умолчанию также установите опору флажка также true   -  person    schedule 16.10.2016
comment
Спасибо @andrew196. это сработало отлично!   -  person iDog    schedule 16.10.2016
comment
Рад слышать. @iDog, если бы вы могли отметить комментарий как правильный ответ, это было бы здорово.   -  person    schedule 16.10.2016


Ответы (2)


Более явным способом сделать это было бы установить параметры по умолчанию в обратном вызове установки расширения:

chrome.runtime.onInstalled.addListener(function (details) {
    if (details.reason === "install") {
        chrome.storage.sync.set({
            'myonoffswitch': true
        }, function() {});
    }
});

Это также имеет то преимущество, что упрощает логику доступа к параметрам.

person bklaric    schedule 16.10.2016

Если я правильно вас понимаю, это сработает:

chrome.storage.sync.get('myonoffswitch', function(storage) {
   $('#myonoffswitch').prop('checked', (typeof storage.myonoffswitch === "undefined" || storage.myonoffswitch == true));
})

В основном то, что я делаю, это если оно не определено, поэтому по умолчанию также установите опору флажка также true

person Community    schedule 16.10.2016