【问题标题】:LocalStorage in GreasemonkeyGreasemonkey 中的本地存储
【发布时间】:2011-05-03 01:23:35
【问题描述】:

我已经开始编写一个greasemonkey 脚本,并且在Greasemonkey 脚本中执行本地存储时遇到了问题。我可以在 GM 中找出 localstorage 的唯一方法是在 newElement.innerHTML DOM 属性中创建另一个 Javascript 实例,但是我的其余变量无法访问。

有什么想法吗?这是我正在处理的 Greasemonkey 代码片段。

        var testHref = anchorTag[i].href;
    var testHTML = anchorTag[i].innerHTML;
    var patHref = /item\?id=[0-9]*/g;
    var patCaptureId = /item\?id=([0-9]*)/g;
    var testId = patCaptureId.exec(testHref);
    var patHTML = /[0-9]* comment(|s)/g;
    var patHTML2 = /discuss/g;
    if(patHref.test(testHref) && !patHTML.test(testHTML) && !patHTML2.test(testHTML))
    {
        newElement = document.createElement('span');
        newElement.style.color = "#FF0000";
        newElement.innerHTML = "<a href=\"javascript:localStorage.setItem( 'one', 'rishabhVerma' ); var test = localStorage.getItem( 'one' ); console.log( test );\"> B</a>";
        anchorTag[i].parentNode.insertBefore(newElement, anchorTag[i].nextSibling); 
    }
    i++;

【问题讨论】:

    标签: javascript greasemonkey google-chrome-extension local-storage


    【解决方案1】:

    如果您只需要存储值,您可以使用经典的 Greasemonkey 方法,使用运行良好的 GM_getValue()GM_setValue() 函数。

    【讨论】:

    • @Basilevs 另一方面,非常大量的数据导致 localStorage 向您吐出异常 ;-)
    • @JanDvorak 我对数据量的评论不再相关 - Greasemonkey uses SQLite to store values
    【解决方案2】:

    嗯,我猜 unsafeWindow.localStorage 不起作用?我知道chrome获取localStorage不是问题,老实说从未在firefox上尝试过。

    【讨论】:

    • 我刚刚在 Greasemonkey 脚本中使用了unsafeWindow.localStorage(在 Mac 上的 Firefox 3.6 中),这似乎工作正常。
    • 请注意,如果 unsafeWindow 能够捕获调用 unsafeWindow 对象时发生的事件,则使用 unsafeWindow 将允许网页检测并可能最小化greasemonkey。此信息可验证here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 2011-12-25
    • 2014-08-16
    • 2019-11-08
    相关资源
    最近更新 更多