Chrome 上的 LocalStorage 和 Userscript

发布于 2024-12-22 01:49:59 字数 1004 浏览 1 评论 0原文

我非常需要某种方式将数据存储在页面的已编辑 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 code>o_shout_tabs==true,无论输入如何(尽管,如果根本没有收到输入,则返回 true)。

I badly need someway to store data within an edited DOM of a page, and then access it from the userscript. Also, I need this to be done on Google Chrome.
This is my current script, but I can't get it working:

The internal script:

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;

The edited 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)"/>

However, this always returns false when I test with for example o_shout_tabs==true, no matter the input (although, if it hasn't received an input at all, it returns true).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぽ尐不点ル 2024-12-29 01:49:59

什么总是返回 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');

What always returns false?

Anyway, the init logic is off. For boolean values, code like this:

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

will always return true or a string.

Use this code:

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');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文