代码之家  ›  专栏  ›  技术社区  ›  user280109

Safari似乎可以缓存页面和DOM状态

  •  0
  • user280109  · 技术社区  · 14 年前

    脚本为用户提供了一个选项编辑屏幕,当您单击保存按钮时,脚本通过HTML5 localstorage API将用户首选项保存为JSON数据包,然后脚本关闭选项屏幕并重新加载页面,在页面重新加载时,脚本应在localstorage中从JSON重新加载首选项,脚本应该根据新的首选项,根据用户所做的设置,以用户想要的方式显示页面。

    我看到的问题是,当我将其作为扩展运行时,当我单击“保存”按钮时,脚本将重新加载页面,但当重新加载页面时,用户对设置所做的更改不会应用于页面。奇怪的是,如果我通过浏览器刷新按钮再次手动重新加载页面,用户在设置中所做的更改会突然变得明显。很明显,数据已经保存到localstorage,但是由于某种原因,当页面第一次重新加载时,它是从缓存文件中重新加载的,只有在第二次手动重新加载时,新页面才会正确显示。我不明白为什么它在ninjakit中作为一个普通的用户脚本工作,而且在Firefox、Opera和GoogleChrome中也能工作,它只是在safari中不能作为一个扩展,太烦人了。我尝试了很多方法来确保safari5不会重新加载缓存的页面,例如在URL中添加额外的参数,但是如果不重新加载页面两次,我就无法让它工作。

    顺便说一句,我没有使用原生safari扩展设置系统,因为我希望脚本能够跨浏览器兼容,所以我要将设置保存到localstorage。

    1 回复  |  直到 11 年前
        1
  •  0
  •   user280109    14 年前

    我设法解决了这个问题,尽管我没有弄清楚究竟是什么原因造成的。