js页面刷新以后全局变量无效的问题

场景:
A页面和B页面是两个不同的html。
B页面以弹窗的形式显示在A页面上。

需求:B页面需要存储一些数据,每次B页面刷新时,数据回显,每次A页面刷新时,数据重置。

我之前弱智一般的解决办法:
在A.js中放个全局变量,把B.js里面的数据存进去。
每次B页面刷新,就去A.js里面取数据。

当时我是不知道页面刷新就不存在全局变量了,还疑惑了半天我的变量呢我的变量我那么大一个全局变量呢 = =

然后我看着控制台的Network,看着每次页面刷新所有.js文件重新加载,顿悟。

我这个SB。

所以最后想了想,决定用cookie保存B.js里面的数据,在A.js里面刷新。

对不起,小土狗真的没见过cookie。

解决方法

1.把需要的数据存成json。
var json = {};
json["key1"].value1 = "abc";
json["key1"].value2 = "def";

2.用cookie保存
// 先把json转化成字符串
var str = "sTag"+ JSON.stringify(json) + "eTag";
document.cookie = "name" + "=" + str;

这里我为什么要加个sTag tag呢,因为获取cookie的时候会把所有的cookie全部返回,我打个标签到时候方便切割,害,我要这名字有🥚用。

3.这样就可以在控制台的application→cookie里面看到啦。

4.取cookie

	// 判断cookie是否存在
	if(document.cookie.indexOf("name") != -1){
		// cookie存在,拿到数据
		var cookie = document.cookie;
		var sIndex = cookie.indexOf("sTag")+4;
		var eIndex = cookie.indexOf("eTag")-1;
		var str = cookie.substring(sIndex,eIndex) + '}';
		var echoValueJson = JSON.parse(str);

切割字符串以后不要忘记收尾哈,加个}

5.清空cookie
document.cookie = "name" + "=" + "";

重名会被覆盖,没覆盖可能路径有问题哈。

哎,希望接下来一切都要好点。

posted on 2021-06-28 14:18  northwest  阅读(1421)  评论(0编辑  收藏  举报

导航