【发布时间】:2011-11-01 13:28:42
【问题描述】:
有时当我在用户脚本中使用对象并使用 TamperMonkey 扩展来运行它时,chrome's console.log() 函数会被缓存。
影响它的代码是这样的。两个console.log(save); 总是打印相同的,尽管从不会相同。但是,如果我更改 console.log(save[testID]['lastCheck']);,它会以不同的方式打印。
function parseTestOverview(DOM)
{
console.log(save);
save[testID]['lastCheck'] = Date.now();
var attempts = DOM.getElementsByClassName('answered');
if(attempts.length == 0)
{
save[testID]['attempts'] = undefined;
save[testID]['lastAttempt'] = undefined;
save[testID]['lastAttempts'] = undefined;
save[testID]['updated'] = false;
}
else if(save['lastAttempts'] || save['lastAttempts'] < attempts.length)
{
save[testID]['attempts'] = parseAttempts(attempts);
var dateString = attempts[attempts.length - 1].innerText
var dateTime = dateString.split(' ');
var date = dateTime[0].split('-');
var time = dateTime[1].split(':');
save[testID]['lastAttempt'] = (new Date(date[2], date[1] - 1, date[0], time[0], time[1])).getTime();
save[testID]['lastAttempts'] = attempts.length;
save[testID]['updated'] = false;
}
else
{
save[testID]['updated'] = true;
}
GM_setValue('save', save);
console.log(save);
return attempts;
}
这可能不会脱离上下文,所以这是整个脚本:http://pastebin.com/u1qqCrt2
这也可能没有任何意义,因为它是特定于站点的脚本。
我在 Mac OS X 10.7.1 上运行 15.0.859.0 canary
【问题讨论】:
-
你说“TamperScript”,但你真的在运行 TamperMonkey,是吗? (前者通常只是在后者上安装脚本的助手。) ... ... 请制作一个不需要登录的问题的独立演示! (理想情况下,也不是丹麦语技能。;))……最后,
GM_setValue()无法在 FireFox 中如此轻松地存储对象。在 Chrome 中可能会有所不同(我还没有测试过),但这可能是问题所在。 -
是的,我的意思是“TamperMonkey”和带有对象的 GM_setValue 似乎可以在其中工作。关于制作一个独立的演示,我不想花几个小时来重新创建网站和东西。
标签: javascript google-chrome google-chrome-extension userscripts tampermonkey