Chrome上的用户脚本LocalStorage

时间:2011-12-19 16:37:10

标签: javascript dom google-chrome userscripts

我非常需要将数据存储在已编辑的页面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)"/>

但是,当我使用例如o_shout_tabs==true进行测试时,无论输入如何,这总是返回false(尽管如果它根本没有收到输入,则返回true)。

1 个答案:

答案 0 :(得分:1)

什么总是返回false?

无论如何,init逻辑关闭了。对于布尔值,代码如下:

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');