在动态加载内容然后前进和后退时Internet Explorer和Firefox的差异

时间:2010-01-14 11:32:43

标签: ajax internet-explorer

我正在开发一个Web应用程序,由于数据库访问速度慢,并非页面中的所有内容都是立即加载的,而是在用户在选择进行选择后单击按钮时动态加载。

这很好用。但是,在动态加载内容后,如果我导航到不同的网页,然后导航回来,在Internet Explorer中,加载的内容将消失,即页面将恢复到最初检索的页面。然而,在Firefox(以及Opera)中,加载的内容仍然存在,即页面看起来就像我导航之前那样。

在我的情况下,Firefox行为是理想的行为,因为用户会定期导航到子页面并返回主页面。因此,我的问题是,有什么方法可以强制Internet Explorer展示这种行为,还是有任何可能的解决方法来获得所需的结果?

3 个答案:

答案 0 :(得分:3)

这是我的IE解决方案。它利用了这样一个事实:即使在导航离开并返回页面时重置DOM,仍会记住输入字段值。

对于每个动态加载的元素,我还有一个隐藏的输入字段,我在其中“缓存”加载的值。然后我有一个函数transferFromCache(),它将每个隐藏输入字段的值复制到相应的元素。这个函数在init页面运行 - 在IE的情况下,每次导航回到页面时都处于页面加载状态。

这种技术也可能用于存储javascript变量的值。

答案 1 :(得分:2)

我认为没有一种方法可以让IE以这种方式模拟FF。原因是与浏览器的相当基本方面有关。 FF使用一种称为“快速DOM缓存”的页面历史记录机制(基于我的有限理解)基本上意味着当它将页面放入浏览器历史记录时,它将在序列化中存储当前DOM(所以当前页面状态)格式,这意味着当从历史记录重新加载页面时,状态将被保留,并且FF可以更快地执行此操作,因为已经完成了大量工作(将HTML解析为DOM等)。相比之下,IE只会将最初收到的HTML存储为历史文件,并在导航历史记录时重新加载。

答案 2 :(得分:2)