iframe导航打破Firefox后退按钮 - 解决方法?

时间:2010-02-20 22:03:47

标签: php javascript jquery fancybox

在Firefox中有一个annoying bug,在动态创建的iframe中导航,然后通过Javascript删除,导致无法使用Firefox后退按钮返回(您必须使用下拉和导航再回过几页)。

我在iframe中使用表单来验证和提交数据。在表单提交/数据验证中,iframe中的页面会刷新。这打破了Firefox返回按钮,如上所述。

我需要一个解决方案来尝试解决这个问题,我现在尝试了一些不同的事情而没有取得多大成功:

  • 将每个iframe页面刷新存储在会话变量(PHP)中,然后在我的jQuery代码中使用history.go(-{session var})进行导航。然而,这似乎只有在加载iframe之前导航回页面时才有效,而不是加载iframe的页面(在后面,它仍会打破后退按钮)
  • 隐藏iframe而不是删除它 - 半工作但需要多次后退按钮点击并显示“您要重新提交此数据吗?”消息
  • 当用户关闭iframe时重新加载iframe。没有优势,就像你回去一样,你必须经历所有以前的iframe gubbins。

任何建议赞赏 - 但请注意:我想使用iframe,不是真的想使用ajax并且喜欢跨浏览器兼容的解决方案(哈!)。

如果您有兴趣,可以采取措施重现此问题:

  • 在Firefox中尝试将iframe加载到fancybox上的iframe示例 主页:http://fancybox.net/home
  • 搜索内容,即在iframe中加载新页面
  • 关闭fancybox框架
  • 尝试并返回而不使用后退下拉列表

顺便说一下,IE比Chrome或Firefox更优雅地处理这种情况!

1 个答案:

答案 0 :(得分:1)

我已经放弃了,因为在阳光下尝试了一切。求助于通过jQuery的AJAX方法发布数据,这些方法不会添加历史项目。