分析解决关于小尾巴辅助脚本问题

问题

发现很多鱼油使用哀酱@APTX-4869小尾巴出现的问题:开启小尾巴和关闭小尾巴的按钮点击之后,在刷新还是on的状态,于是闲着无聊看看源码分析了一下。

原因

  1. 第一次使用小尾巴的时候,给的默认值是false,var suffixFlag = window.localStorage['xwb_flag'] ? window.localStorage['xwb_flag'] : false;此时suffixFlag的值是布尔类型的值false
  2. 在进行xwb_btn.textContent =suffixFlag?'小尾巴:on' : '小尾巴:off';判断的时候是小尾巴:off
  3. 在点击按钮的时候执行suffixFlag = !suffixFlag,此时suffixFlag还是布尔类型的值true,而进行浏览器存储的时候,window.localStorage['xwb_flag']的值变成了字符串的true,所以导致下次获取本地存储的xwb_flag的值是字符串。
  4. 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;