2010-04-15 53 views
1

我很确定我不能做我实际要求的事情,但我想知道是否有解决该问题的方法。在缓存页面上触发Javascript?

我有一个页面,有一个下拉选择表单元素与几个选项。如果选择了一个特定的选项(在这种情况下,第一个项目),我们显示额外的内容(通过jQuery)。这工作正常。

然而,如果选择第2项,会发生什么情况,其他内容会消失,因为它应该如此。然后我转到其他页面,然后按下BACK。在这一点上,页面正确地保留了隐藏的附加内容(因为它是最后一个状态),但SELECT菜单已被重置为第一项。然后我必须单击SELECT,选择一个不同的选项,然后再次选择它,然后选择第一个选项,最后再添加其他内容。

我无法在缓存页面上触发Javascript(或者有什么办法?)其他任何巧妙的选项?

我想到的一个选择是将某种鼠标悬停操作应用于包含执行快速“重置元素”检查的SELECT菜单的区域。这看起来有点不顺手,当然,对于人们来说,会产生一个奇怪的屏幕重绘。

+0

哪些浏览器涉及? – Simeon 2010-04-15 14:57:25

+0

您是否必须在页面上保留其他任何状态?我相信如果你定义了一个onunload事件,它至少可以让Firefox使用后退按钮的缓存版本。 – 2010-04-15 15:12:34

+0

@Simeon它似乎确实是Firefox。 @邓肯...有趣的选择。我们不希望打破浏览器缓存,理想情况下,但我会考虑更多的onunload选项... – 2010-04-15 15:59:37

回答

0

您可以记录用户操作已经发生并使用JavaScript重新执行。您可以将其存储在cookie中,然后在页面加载时检查它并重置所需的元素。

+0

问题是它似乎无法在缓存页面上触发加载事件。 – 2010-04-15 15:02:04

+0

不要将初始化放入负载中,将其放在页面的底部。 – 2010-04-15 17:14:57

+0

同样的问题。该页面缓存在浏览器中,因此它实际上不会重新呈现页面,因此也不会执行任何内联脚本。这个问题似乎是Firefox没有在SELECT输入中缓存所选项目。 – 2010-04-15 21:49:53