0

我编写了一个 Greasemonkey javascript,它在 NinjaKit 新的 Safari 用户脚本管理器中运行良好,但是当我尝试使用 Safari 5 扩展构建器编译相同的脚本时,我得到了一些非常奇怪的行为。

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

我看到的问题是,当我将它作为扩展程序运行时,当我单击保存按钮时,脚本会重新加载页面,但是当重新加载页面时,用户对设置所做的更改不会应用于页面。奇怪的是,如果我通过浏览器刷新按钮再次手动重新加载页面,用户在设置中所做的更改会突然变得明显。所以显然数据已保存到本地存储,但由于某种原因,当页面第一次重新加载时,它以某种方式从缓存文件中重新加载,并且只有在第二次手动重新加载时,新页面才能正确显示。我不明白为什么这在 ninjakit 中可以作为普通用户脚本使用,并且实际上也可以在 Firefox、Opera 和 Google chrome 中使用,它只是不能作为 safari 中的扩展程序,它太烦人了。一世'

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

有没有其他人目睹过这种行为?或者有任何线索如何解决这个问题?这让我很精神...

4

1 回答 1

0

我设法解决了这个问题,虽然我没有弄清楚到底是什么原因造成的。

我通过在扩展生成器中将其添加为“结束脚本”而不是“启动脚本”来使脚本正常工作,现在一切似乎都可以正常工作。呸!

于 2010-08-11T14:22:50.470 回答