Firefox bfcache问题?

时间:2013-06-24 17:00:09

标签: asp.net-mvc asp.net-mvc-4 firefox browser-cache

我只有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将此页面和部分视图设置为不缓存。但那也不起作用。

2 个答案:

答案 0 :(得分:0)

也许是bfcache,也许不是。 前段时间我不得不面对同样的问题。浏览器缓存在我们的表单上引起了一些奇怪的行为,并且它影响了页面的预期结果。 无论如何要解决它为了使程序加载始终正确的值(假设你正在加载它),你可以做的就是通过你的Javascript初始化值。

如果您使用JQuery,则应使用:

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

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

希望这有帮助。

答案 1 :(得分:0)

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