分析解决关于小尾巴辅助脚本问题
问题
发现很多鱼油使用哀酱@APTX-4869小尾巴出现的问题:开启小尾巴和关闭小尾巴的按钮点击之后,在刷新还是on的状态,于是闲着无聊看看源码分析了一下。
原因
- 第一次使用小尾巴的时候,给的默认值是false,
var suffixFlag = window.localStorage['xwb_flag'] ? window.localStorage['xwb_flag'] : false;
此时suffixFlag
的值是布尔类型的值false
。 - 在进行
xwb_btn.textContent =suffixFlag?'小尾巴:on' : '小尾巴:off';
判断的时候是小尾巴:off
。 - 在点击按钮的时候执行
suffixFlag = !suffixFlag
,此时suffixFlag
还是布尔类型的值true
,而进行浏览器存储的时候,window.localStorage['xwb_flag']
的值变成了字符串的true
,所以导致下次获取本地存储的xwb_flag
的值是字符串。 - 当
window.localStorage['xwb_flag']
存在的时候取的值都是字符串,所以当你们刷新的时候这里的判断xwb_btn.textContent =suffixFlag?'小尾巴:on' : '小尾巴:off';
中的suffixFlag
是字符串,已经不是判断是布尔类型的true
还是false
,而是判断suffixFlag
的值否存在,所以刷新后显示还是小尾巴:on
。
解决
在获取本地存储的xwb_flag
的时候进行数据转换即可
var suffixFlag = window.localStorage['xwb_flag'] ? JSON.parse(window.localStorage['xwb_flag']) : false;
-
Q&A
@Ashe 来看看
好👍
厉害
大佬啊 带我
佬
厉害!
加辣大佬!
可以直接
var suffixFlag = window.localStorage['xwb_flag'] == "true"
厉害啊辣