localStorage页面之间的更新;适用于FF 39.0& Chrome 44,但不适用于Safari 8.0

时间:2015-08-09 15:19:33

标签: javascript html html5 safari local-storage

我创建了一个包含2个.html页面和1个基础.js页面的离线站点,其中包含必要的功能(两个html页面都引用了这个js页面):

1) edit.html 是用户以简单的html格式输入值数组的位置,在提交时,存储在JSON stringify -d localStorage变量中{{1} })。然后该脚本执行"personList"加载另一页。

2) main.html ,在window.location.href = "main.html";事件中,运行首先检索localStorage变量body onload的函数。如果"personList"未定义,则会将用户重定向回 edit.html 以输入值;否则它会在"personList"上执行JSON解析以将其恢复为数组,并使用值填充 main.html 页面的多个区域。

这适用于FF 39,Chrome 44和Safari 8;在 main.html 页面的初始加载时,值与 edit.html 中输入的值相匹配。

发生问题的地方:

main.html 有一个允许用户编辑列表的链接;该链接只需"personList"即可将用户带回该页面。 edit.html 使用localStorage变量window.location.href = "edit.html"中的值填充表单,然后用户可以更新这些值并再次点击提交(然后将用户带回 main。 HTML )。

  • 在FF 39中, main.html 按预期显示"personList"已更新
    • 在Chrome 44中, main.html 按预期显示"personList"更新
  • 在Safari 8中, main.html 会显示"personList"更新前值。

检查Safari开发人员工具中的localStorage变量内容,确认"personList" edit.html 值已更新, main.html 值似乎显示为被缓存(因为它仍包含旧内容)。

如果我关闭Safari窗口然后打开一个新窗口,它会提取"personList"的更新值,但我显然不希望用户必须关闭并重新打开浏览器。 "personList"事件中调用的函数(将值加载到 main.html )肯定会在初始加载和来自 edit.html

我用谷歌搜索和搜索堆栈而没有找到这种情况 - 任何想法?

0 个答案:

没有答案