Greasemonkey 中的本地存储
Posted
技术标签:
【中文标题】Greasemonkey 中的本地存储【英文标题】:LocalStorage in Greasemonkey 【发布时间】: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++;
【问题讨论】:
【参考方案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以上是关于Greasemonkey 中的本地存储的主要内容,如果未能解决你的问题,请参考以下文章
Greasemonkey:突出显示 HTML 文件中的许多单词
Greasemonkey脚本中的setinterval()和.click()[重复]
如何用 Greasemonkey 的用户脚本替换 JSON 字符串中的文本
Linsheng - How To Determine The Grease In The Air Compressor?