刷新时不要弹出窗口。仅在用户关闭浏览器窗口时显示

时间:2014-10-31 13:44:50

标签: javascript jquery

我想只在用户关闭浏览器窗口时显示弹出窗口。但是,在以下代码中。刷新页面时显示弹出窗口。

我的代码

<script type="text/javascript">
    $(document).ready(function()
    {
        var key = true;
        $(window).bind('beforeunload', function(e){
            if(key)
             return confirm("Do you really want to close? This will log you out of your profile."); 
         e.preventDefault()
        }); 
        $(document).on("click","a",function() {
          key=false; 
        });    
    });
</script>

2 个答案:

答案 0 :(得分:1)

这基本上就是你所需要的。

来源:open a custom popup on browser window/tab close

JSFiddle:http://jsfiddle.net/SQAmG/5/

var popit = true;
window.onbeforeunload = function() { 
     if(popit == true) {
          popit = false;
          return "Are you sure you want to leave?"; 
     }
}

修改

使用HTML5 Web Storage模拟浏览器中的会话。在这里,您可能希望使用sessionStorage而不是localStorage,以便在浏览器窗口完全关闭时会话结束。

如果设置了sessionStorage变量,请不要启动弹出窗口,否则允许弹出代码执行。

HTML5网络存储:http://www.w3schools.com/html/html5_webstorage.asp

答案 1 :(得分:1)

如果设置onbeforeunload回调,则每次关闭选项卡或刷新页面时都会执行回调。所以,让我们进入一些黑客攻击。当我们关闭标签时,窗口会失去焦点。所以在onbeforeunload内,我们将检查窗口是否具有焦点。如果有,则刷新页面。如果它失去了焦点,可能你已经关闭了标签。

window.onbeforeunload=function(){
    if(!document.hasfocus()){
        //show popup
    }
}