在`#`之后在URL中存储压缩状态

时间:2013-09-12 07:48:58

标签: 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组件,并且将选择字母表,因此不必对结果进行编码。 (不需要进一步了解历史API - 对此有Director。)

1 个答案:

答案 0 :(得分:0)

使用stringify和base64编码怎么样?

var my_state = { foo: "bar", baz: "quo" };
var s1 = JSON.stringify(my_state);
var s2 = btoa(s1);
console.log(s2);
// result: eyJmb28iOiJiYXIiLCJiYXoiOiJxdW8ifQ==

btoa 方法仅适用于Chrome / Mozilla,请查看此问题以查找跨浏览器的base64库: How can you encode a string to Base64 in JavaScript?