我有包含iframe的网络应用。在主要部分客户端通过ajax与服务器通信,另外我添加了beforeunload = function(){return“something”;},所以当用户点击浏览器后退按钮时会出现警告,当用户点击离开页面时,他将失去会话和登录页面将显示。在iframe部分我使用servlet,因此当用户点击浏览器后退按钮警报时不会出现因为只有iframe页面会卸载。现在我想要实现的目标。当用户在iframe中进行操作时,当他单击浏览器后退按钮时,则会出现警报,当用户单击离开页面时,我想要注销整个应用程序。当他点击不离开页面iframe不应该重新加载。
我尝试使用beforeload和unload之前的两个事件来解决这个问题。 这是在iframe内部:
var confirm = false;
var clicked = true;
$(window).on('beforeunload', function(evt){
if(confirm){
return "Text";
} else {
clicked = false;
}
});
$(window).on('unload',function(evt){
if(clicked){
$(this).off('beforeunload');
window.parent.location = window.parent.location + "/error";
}
});
现在当用户在iframe中操作时点击后退按钮浏览器时,会出现警告。当点击离开页面工作正常时,请退出。但是当点击不离开时,iframe中的页面会回到之前,而不是为什么:(。我想阻止它。
答案 0 :(得分:0)
一个人无法禁用浏览器后退按钮功能,只有可以做的事情就是阻止他们。
以下是需要放置在页面的head部分的JavaScript代码段,您不希望用户使用后退按钮重新访问
<script type = "text/javascript" >
function preventBack(){window.history.forward();}
setTimeout("preventBack()", 0);
window.onunload=function(){null};
</script>
假设有两页Page1.aspx和Page2.aspx以及Page1.aspx重定向到Page2.aspx
因此,为了防止用户使用Back Button访问Page1.aspx,您需要将上述脚本放在Page1.aspx的head部分中,如下所示。
以下是原始文章:http://www.aspsnippets.com/Articles/Disable-Browser-Back-Button-Functionality-using-JavaScript.aspx