Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在URL中存储压缩状态`#`_Javascript_Jquery_Serialization - Fatal编程技术网

Javascript 在URL中存储压缩状态`#`

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

我的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" }; // 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安全字母表(请参阅(