我创建了一个包含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 )。
"personList"
的已更新值
"personList"
的更新值"personList"
的更新前值。检查Safari开发人员工具中的localStorage变量内容,确认"personList"
的 edit.html 值已更新, main.html 值似乎显示为被缓存(因为它仍包含旧内容)。
如果我关闭Safari窗口然后打开一个新窗口,它会提取"personList"
的更新值,但我显然不希望用户必须关闭并重新打开浏览器。 "personList"
事件中调用的函数(将值加载到 main.html )肯定会在初始加载和来自 edit.html
我用谷歌搜索和搜索堆栈而没有找到这种情况 - 任何想法?