将压缩状态存储在“#”之后的 URL 中
Storing compressed state in URL after `#`
我的JavaScript代码将其状态存储在一个小的键值字典中:
var my_state = { foo: "bar", baz: "quo" }; // It is a bit longer than that. :-)
我想将此状态存储在页面的 URL 中:
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==
但是 btoa 方法仅在 Chrome/Mozilla 中可用,看看这个问题来找到一个跨浏览器的 base64 库:如何在 JavaScript 中将字符串编码为 Base64?
相关文章:
- jqueryajax调用是复制url,当在模态视图之后在外部js文件中进行调用时
- hashbang之后的角度替换url
- Laravel:在玩了Ajax之后,我在表单中的所有按钮都发布到了同一个url
- Ajax - 在“成功”之后转到另一个页面,从那里的URL中检索用户ID
- 使用 javascript / jquery 检查 URL 在第二个“/”之后是否有任何内容
- 我需要一些关于PHP的帮助,并在“?”之后更新URL
- 尝试将 URL 中 # 之后的字符串传递给 PHP 变量
- 将压缩状态存储在“#”之后的 URL 中
- 在pushstate改变浏览器url之后刷新页面;它告诉我页面没有;不存在
- 删除“”之后的最新URL参数/&”;
- 在其他函数之后从url中删除查询字符串
- 使用JavaScript将URL参数(内联和?之后)转换为对象
- 在主页url之后查找并更改url的一部分
- 如何在=sign之后在javascript控制台(F12)中将url页面增加一个
- 替换URL中最后一个字符之后的所有内容
- 在windows .location.reload(true)之后,URL重定向在IE11中没有发生
- 替换URL中斜杠之后的所有内容
- 提取SRC并设置为href值..在?url=之后和&addclient=之前
- 最干净的插入".js"在url的路径部分之后
- jQuery代码没有在window.location之后调用.替换(url)