LocalStorage с пользовательским скриптом в Chrome

Мне очень нужно как-то хранить данные в редактируемом DOM страницы, а затем получать к ним доступ из пользовательского скрипта. Кроме того, мне нужно, чтобы это было сделано в Google Chrome. Это мой текущий скрипт, но я не могу заставить его работать:

Внутренний скрипт:

var o_shout_tabs=unsafeWindow.localStorage.getItem('va_shout_tabs')||true;
var o_profile_damage=unsafeWindow.localStorage.getItem('va_profile_damage')||true;
var o_allies=unsafeWindow.localStorage.getItem('va_allies')||true;

Отредактированный DOM:

<script type="text/javascript">
     function saveData(a,b){
         var unsafeWindow=this['unsafeWindow']||window;
         unsafeWindow.localStorage.setItem('va_'+a,b);
     }
</script>
<input type="checkbox" value="1" onclick="saveData('shout_tabs', this.checked)"/>
<input type="checkbox" value="1" onclick="saveData('profile_damage', this.checked)"/> 
<input type="checkbox" value="1" onclick="saveData('allies', this.checked)"/>

Однако это всегда возвращает false, когда я тестирую, например, o_shout_tabs==true, независимо от ввода (хотя, если он вообще не получил ввода, он возвращает true).


person SnackerSWE    schedule 19.12.2011    source источник


Ответы (1)


Что всегда возвращает false?

Во всяком случае, логика инициализации отключена. Для логических значений используйте следующий код:

var o_shout_tabs=unsafeWindow.localStorage.getItem('va_shout_tabs')||true;

всегда будет возвращать true или строку.

Используйте этот код:

function getBoolFromStorageDefaultTrue (varName) {
    var val = localStorage.getItem (varName);
    if (val == null)
        return true;
    return (  (val == "false")  ?  false  :  true  );
}

var o_shout_tabs        = getBoolFromStorageDefaultTrue ('va_shout_tabs');
var o_profile_damage    = getBoolFromStorageDefaultTrue ('va_profile_damage');
var o_allies            = getBoolFromStorageDefaultTrue ('va_allies');
person Brock Adams    schedule 19.12.2011