我在网上搜索了很多以摆脱这个问题,但无法找到具体的解决方案,尽管以前详细讨论过该问题。IFrame后退按钮
查询很简单。我的JavaScript动态地在网页上添加一个Iframe(显示一个反馈表单)。问题在于,“回答后”,现在当用户单击浏览器的后退按钮时,iframe而不是浏览器窗口受到影响,即问卷再次显示。我希望浏览器后退按钮正常运行。
这种行为真的很烦人,而且我很难解决这个问题。
我正在使用firefox。
期待回复。请告知我是否应该提供更多详情。
感谢,
我在网上搜索了很多以摆脱这个问题,但无法找到具体的解决方案,尽管以前详细讨论过该问题。IFrame后退按钮
查询很简单。我的JavaScript动态地在网页上添加一个Iframe(显示一个反馈表单)。问题在于,“回答后”,现在当用户单击浏览器的后退按钮时,iframe而不是浏览器窗口受到影响,即问卷再次显示。我希望浏览器后退按钮正常运行。
这种行为真的很烦人,而且我很难解决这个问题。
我正在使用firefox。
期待回复。请告知我是否应该提供更多详情。
感谢,
在窗体中有一个提交按钮,这帖子的页面到服务器。无论您是否使用iframe,后退按钮将始终将用户发送回表单。理想的方式是通知用户已完成的动作,在这种情况下,感谢用户提供反馈(使用警告框),并将用户重定向到主页或在页面中提供一个按钮“回到家”。
Firefox和IE确实像你提到的,而Chrome不这样做,我猜其他WebKit浏览器会做同样的。 在Chrome中,单击后退按钮会将您带到您想要去的位置(前一个父框架的URL)。即Chrome在后退按钮历史记录中不添加iframe网址更改。
不幸的是,我发现没有办法强制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中动态加载的初始表单。
我遇到同样的问题:我使用的是动态创建的iframe来显示我的网页上“弹”,其SRC指向得到了一个形式和一个提交按钮,另一页。提交该页面后,使用JS回调来隐藏iframe。正如你所解释的,这会导致一个新的条目被添加到历史记录中(至少在IE上)。
但我发现从DOM中删除iframe元素(而不是隐藏它)导致不需要的历史记录被删除(在IE9上测试)!在这种情况下用户期望的是什么。
您可以在此自己在IE9观察:
也测试过在IE8和Firefox 10上工作。 –
我碰到过这个问题,并且为了更细化这个答案,我发现如果我没有指定iframe的src,直到加载父页面之后,奇怪的后面行为不会发生。 –
同意这一点,任何更改回的这种行为会相当混淆用户。 –
我将提供更多的上下文:脚本是在公共领域网站上工作的扩展的一部分。我已经有一个“返回上一页”链接,但我仍然希望后退按钮的功能,因为我在我的文章中写道。我不知何故想从浏览器历史记录中分离或删除Iframe历史记录,但我不确定我能否做到这一点? – VJune
您可以这样做的唯一方法是使用AJAX将表单值发布到服务器。通过这种方式,您可以避免发布帖子,并且后退按钮可以将您带到上一页。但是这涉及到大量的JavaScript编码来将数据发布到服务器,然后在获得有效响应后隐藏表单域。使用jQuery for Ajax可以让你更轻松一些。但是我怀疑你是否可以删除浏览器历史记录。 – Arun