我在Firefox的当前网站上使用会话存储时看到了奇怪的行为。
当用户导航到该站点时,会话存储值设置如下:
sessionStorage.setItem(cacheKey, cacheValue);
然后我执行检查以查看会话密钥在网站上的后续页面上是否具有特定值。如果是这样,那么我运行一个函数,如果没有则不运行。
但是,如果用户在Firefox中启用了“恢复会话”功能,则浏览器似乎存储会话密钥,但不存储值(空字符串)。我对随后失败的值执行检查,因为该值现在为null或空字符串。
是否有更强大的方法来处理这种行为?
答案 0 :(得分:1)
对于这样的意外行为,我会对待"恢复"会话作为新会话,如果它没有持久化值。
对值进行简单的空值检查就足够了。
if (window.sessionStorage.getItem(cacheKey) === null) {
sessionStorage.setItem(cacheKey, cacheValue);
}
我觉得,如果将来价值持续存在,你可能希望保留现有价值。