【问题标题】:LocalStorage with Userscript on Chrome在 Chrome 上使用用户脚本的 LocalStorage
【发布时间】:2012-01-23 18:24:17
【问题描述】:

我非常需要某种方式将数据存储在页面的已编辑 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)。

【问题讨论】:

    标签: javascript dom google-chrome userscripts


    【解决方案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');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      • 2012-01-01
      • 1970-01-01
      • 2012-05-16
      • 2011-04-25
      • 1970-01-01
      相关资源
      最近更新 更多