IFrame后退按钮

时间:2011-02-28 02:05:41

标签: javascript firefox iframe

我在互联网上搜索了很多东西以解决这个问题,但是尽管之前已经详细讨论了这个问题,但我找不到具体的解决方案。

查询很简单。我的javascript动态地将iframe添加到网页(显示反馈表单)。问题在于,“在回答”之后,现在当用户点击浏览器的后退按钮时,iframe而不是浏览器窗口受到影响,即再次显示问卷。我希望浏览器后退按钮能够正常运行。

这种行为真的很烦人,我在解决这个问题时遇到了麻烦。

我正在使用Firefox。

期待回复。如果我需要提供更多详细信息,请通知我。

谢谢,

3 个答案:

答案 0 :(得分:3)

您的表单有一个提交按钮,用于将页面发布到服务器。无论您是否使用iframe,后退按钮都将始终将用户发送回表单。理想的方法是通知用户已完成的操作,在这种情况下,感谢用户的反馈(使用警告框)并将用户重定向到主页或在页面中提供一个按钮说"返回到主页"

答案 1 :(得分:3)

Firefox和IE确实像你提到的那样,但Chrome没有,我猜其他WebKit浏览器会做同样的事情。 在Chrome中,单击“上一步”按钮将使您到达目的地(父框架的上一个URL)。即Chrome不会在后退按钮历史记录中添加iframe URL更改。

可悲的是,我发现没有办法强迫IE和FF复制这个,所以我使用了Arun上面建议的AJAX post方法。

这是我的iframe源代码,它使用jQuery发布表单,并将整个页面替换为该POST的结果:

<form method="post" onsubmit="postForm(this);return false">
  ...
</form>

<script type="text/javascript">
function postForm(form) {
    $.post(form.action, $(form).serialize(), postCompleted);
}
function postCompleted(data) {
    $('html').html(data);
}
</script>

这适用于所有浏览器;单击“返回”按钮将返回到最终用户看到的上一个URL,而不是iframe中动态加载的初始表单。

答案 2 :(得分:3)

我遇到了同样的问题:我使用动态创建的iframe在我的页面上显示“弹出窗口”,其SRC指向另一个有页面和提交按钮的页面。提交该页面后,使用JS回调来隐藏iframe。正如您所解释的,这会导致将新条目添加到历史记录中(至少在IE上)。

但是我发现从DOM中删除iframe元素(而不是隐藏它)会导致不需要的历史记录条目被删除(在IE9上测试)!在这种情况下,用户会期望这是什么。

您可以在IE9上自己观察:

  1. 打开后退按钮菜单(右键单击后退按钮):当前页面只有一个条目
  2. 在iframe =&gt;中按提交后退按钮菜单显示iframe的一个额外条目
  3. 从DOM =&gt;中移除iframe后退按钮菜单不再显示该条目