LocalStorage с UserScript на Chrome - PullRequest
       16

LocalStorage с UserScript на Chrome

1 голос
/ 19 декабря 2011

Мне очень нужно как-то хранить данные в отредактированном 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).

1 Ответ

1 голос
/ 19 декабря 2011

Что всегда возвращает 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');
...