我已经写了一本GreaseMonKey JavaScript,它在新的Safari Userscript Manager中正常工作,但是当我尝试使用Safari 5 Extension Builder编译相同的脚本时,我会得到一些非常奇怪的行为。

该脚本为用户提供了一个选项编辑屏幕,当您单击“保存”按钮时,脚本通过HTML5 LocalStorage API保存用户首选项作为JSON数据包,然后脚本关闭选项屏幕并重新加载页面,页面上的页面重新加载,Reload,Reload,Reload,Reload,Reload,Reload,reoload,Reload,Reload scripts脚本脚本应重新加载LocalStorage中JSON的首选项,并且该脚本应采取新的首选项,以按照他们所做的设置显示用户想要的方式。

我看到的问题是,当我作为扩展程序运行时,当我单击“保存”按钮时,脚本重新加载页面,但是当重新加载页面时,用户对设置进行的更改不会应用于页面。怪异的部分是,如果然后通过浏览器刷新按钮再次手动重新加载页面,则用户在设置中所做的更改突然变得很明显。因此,显然,数据已保存到localStorage,但是由于某种原因,当页面首次重新加载时,它是从缓存的文件中重新加载的,并且仅在第二个手动重新加载中,才正确显示了新页面。我不明白为什么这是忍者在忍者,实际上也可以在Firefox,Opera和Google Chrome中起作用,它只是在Safari的扩展过程中起作用,它令人讨厌。我尝试了很多方法来确保Safari 5不会重新加载缓存的页面,例如在URL中添加额外的参数,但是我只是无法使其工作,而无需重新加载页面两次。

顺便说一句,我不使用本机Safari扩展设置系统,因为我希望该脚本兼容交叉浏览器,因此这就是为什么要将设置保存到LocalStorage的原因。

还有其他人见证了这种行为吗?还是有任何线索如何解决?这使我精神上...

有帮助吗?

解决方案

我设法解决了这个问题,尽管我没有确切地弄清楚是什么原因引起的。

我通过将其添加为“结束脚本”而不是扩展构建器中的“启动脚本”来使该脚本工作,现在似乎一切正常。 ph!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top