0

我只有firefox有问题。我的页面显示了一个树结构,当用户单击他们想要展开的节点时,它通过 ajax 加载。我在使用 firefox 时遇到的问题,只有 firefox,它会在第一页加载时扩展节点。但是在那之后,Firefox 将其缓存起来很奇怪,并且 ajax 请求的节点标头而不是子节点被转移到新页面。这是一个问题,因为携带的节点标头包含确定节点是否已检索其子节点的信息。

<div class="node topbar"
   <input type="hidden" id="foo" name="hasretrievedchildren" value="1"/>
...
</div>

它应该是在第一页加载时。

<div class="node topbar"
   <input type="hidden" id="foo" name="hasretrievedchildren" value="0"/>
...
</div>

我的 Javascript 检查该输入上的非零值以执行 AJAX 调用。

这是 bfcache 问题吗?我被引导相信这不是因为我添加了

window.onunload = function(); 

到 js 文件和脚本标记中,并且都没有修复它,这篇文章 https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching 说应该使 bfcache 无效。

我正在使用 asp.net MVC 4,并尝试使用 MVCdonutcaching 将此页面和部分视图设置为不缓存。但这也没有用。

4

2 回答 2

0

也许是 bfcache,也许不是。前段时间我不得不面对同样的问题。浏览器缓存在我们的表单上造成了一些奇怪的行为,并且影响了页面的预期结果。以某种方式解决它为了使程序加载始终正确的值(假设您从 加载它)您可以做的事情是通过您的 Javascript 初始化该值。

如果你使用 JQuery,你应该使用:

<script type="text/javascript">
    $(document).ready(){
      //Assign your items values here
    }
<script>

您还可以在 JS 中使用 onload 处理程序。

希望这可以帮助。

于 2013-07-03T23:34:39.350 回答
0

我能够解决这个问题。Firefox 缓存所有表单数据,甚至是隐藏的输入。由于我使用隐藏字段来存储启用 AJAX 请求的标志,因此它将重新加载带有标志集的表单数据。我将它移到了一个自定义属性中,它完全可以正常工作。

于 2013-07-31T16:30:48.843 回答