Javascript 在URL中存储压缩状态`#`
我的JavaScript代码将其状态存储在一个小型键值字典中:Javascript 在URL中存储压缩状态`#`,javascript,jquery,serialization,Javascript,Jquery,Serialization,我的JavaScript代码将其状态存储在一个小型键值字典中: var my_state = { foo: "bar", baz: "quo" }; // It is a bit longer than that. :-) http://example.com/page.html#state=eyBmb286ICJiYXIiLCBiYXo6ICJxdW8iIH0K 我想将此状态存储在页面的URL中: var my_state = { foo: "bar", baz: "quo" }; // I
var my_state = { foo: "bar", baz: "quo" }; // It is a bit longer than that. :-)
http://example.com/page.html#state=eyBmb286ICJiYXIiLCBiYXo6ICJxdW8iIH0K
我想将此状态存储在页面的URL中:
var my_state = { foo: "bar", baz: "quo" }; // It is a bit longer than that. :-)
http://example.com/page.html#state=eyBmb286ICJiYXIiLCBiYXo6ICJxdW8iIH0K
http://example.com/page.html#state=eyBmb286ICJiYXIiLCBiYXo6ICJxdW8iIH0K
我希望该状态是压缩的,因此URL会更短
我该怎么做
优选地,压缩代码将知道它正在压缩URL组件,并且将选择字母表,以便不必对结果进行编码。(不需要进一步了解历史API,这是有必要的。)使用stringify和base64编码怎么样
var my_state = { foo: "bar", baz: "quo" };
var s1 = JSON.stringify(my_state);
var s2 = btoa(s1);
console.log(s2);
// result: eyJmb28iOiJiYXIiLCJiYXoiOiJxdW8ifQ==
但是方法仅在Chrome/Mozilla中可用,请查看此问题以查找跨浏览器base64库:
这是国家的良好代表吗?已经很短了!但是你可能想看看,在max:-)下,它的时间会延长10倍左右,但我也不想让用户太自由地搞乱状态(当然,我意识到这不是一个安全措施)。我更新了这个问题,以反映……我想知道,这个问题怎么会脱离主题?:)哦。那些愚蠢的规则。:-)修正了问题,好的。好的,是的,但这种方法不压缩数据-base64仍然应该被编码…我目前的计划是结合使用,但这是次优的。我更喜欢lzwCompress的补丁版本,它可以直接以我需要的格式保存。比lzwCompress好得多。但仍在寻找URL感知解决方案。注意:Base64有一个URL安全字母表(请参阅(