浏览器关闭事件不是页面刷新/重新加载事件

时间:2014-12-09 04:04:47

标签: javascript jquery

我需要检测浏览器关闭事件而不是页面刷新/重新加载事件

我试过这个,但在这两个条件下它的工作

    $(window).bind('beforeunload',function(){

        });

 window.onbeforeunload = function (e) {

        }
$(window).unload(function() {  

});​

4 个答案:

答案 0 :(得分:1)

没有用于捕获浏览器Close Event的具体方法。

您只能在当前页面的unload上捕获。

当您尝试refreshreload页面时,该功能也适用。

答案 1 :(得分:1)

您可以尝试设置一些值来检查页面是否已经全部加载,然后才触发onb​​eforeunload。

我正在使用类似的东西:

window.onbeforeunload = function (e) {
            if(is_form_dirty())
                return '<@msg "elections.general.modal.confirm.changes.text" />';
        }

设置应该基于“会话” - 如果可能的话,使用localstorage或只是普通的旧cookie

答案 2 :(得分:0)

重新加载或关闭没有单独的事件。浏览器为任一情况触发相同的bodyunload事件。

如果必须绝对检测关闭,可以通过检查window.event.clientX和window.event.clientY中的坐标来完成。但这是你想要做的最后一件事。

如果您仅使用IE,则可以实施可能会明确检测到浏览器关闭的BHO。

答案 3 :(得分:0)

我是这样做的;

    <script>

var mie = (navigator.appName == "Microsoft Internet Explorer") ? true : false;

if (!mie) {
     document.captureEvents(Event.MOUSEMOVE);
     document.captureEvents(Event.MOUSEDOWN);
}

document.onmousemove = function (e) {mousePos(e);};
document.onmousedown = function (e) {mouseClicked();};

var mouseClick;
var keyClicked;

var mouseX = 0;
var mouseY = 0;

function mousePos (e) {
    if (!mie) {
        mouseX = e.pageX; 
        mouseY = e.pageY;
    }
    else {
        mouseX = event.clientX + document.body.scrollLeft;
        mouseY = event.clientY + document.body.scrollTop;
    }

    document.show.mouseXField.value = mouseX;
    document.show.mouseYField.value = mouseY;

    return true;
}

window.onbeforeunload = function (e)
        {
            e = e || window.event;
            var y = e.pageY || e.clientY;
            if (y <= 0){    

            }
            else {
                if(document.show.mouseYField.value < 30) {
                    return 'Do you want to exit?';
                }
            }
          }
</script>

<form name ="show" style="display:none">
        <input type="text" name="mouseXField" value="0" size="6">Mouse X Position<br>
        <input type="text" name="mouseYField" value="0" size="6">Mouse Y Position<br>
</form>