我在Firefox用户脚本中成功使用了serialization helpers。
function deserialize(name, def) {
return eval(GM_getValue(name, (def || '({})')));
}
function serialize(name, val) {
GM_setValue(name, uneval(val));
}
他们也适用于较旧的Chrome版本。最近我注意到Chrome的uneval()
开始在其结果中添加前缀\$1 =
,打破了eval()
反序列化:
uneval([56, 67]) -> "\\$1 = [56, 67];"
我现在必须检测并删除这个额外的前缀。是否有更合法的方式以跨浏览器方式保存数据?我只需要在同一个浏览器中恢复这些数据 - 无需关心存储格式。
Greasemonkey和Tampermonkey用于测试。