我的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。)
答案 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?