0

我有包含 iframe 的网络应用程序。在主要部分客户端通过ajax与服务器通信,另外我添加了 beforeunload = function(){ return "something";} ,所以当用户点击浏览器后退按钮时会出现警报,当用户点击离开页面时,他将失去会话和登录页面将显示。在 iframe 部分我使用 servlet,因此当用户单击浏览器后退按钮时不会出现警报,因为只有 iframe 页面会卸载。现在我想实现什么。当用户在 iframe 中进行操作时,当他单击浏览器后退按钮时,应该会出现警报,当用户单击离开页面时,我想注销整个应用程序。当他点击时不要离开 iframe 内的页面不应该重新加载。

我试图在卸载和卸载之前使用两个事件来解决这个问题。这是在 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中的页面会回到更早的位置,我不知道为什么:(。我想阻止它。

4

1 回答 1

0

不能禁用浏览器后退按钮功能,唯一可以做的就是阻止它们。

下面是需要放置在您不希望用户使用后退按钮重新访问的页面头部的 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

因此,为了防止用户使用返回按钮访问 Page1.aspx,您需要将上述脚本放在 Page1.aspx 的头部,如下所示。

在此处输入图像描述

这是原始文章:http ://www.aspsnippets.com/Articles/Disable-Browser-Back-Button-Functionality-using-JavaScript.aspx

于 2014-04-10T03:43:27.317 回答