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

Javascript 浏览器关闭事件不是页面刷新/重新加载事件,javascript,jquery,Javascript,Jquery,我只需要检测浏览器关闭事件,而不需要检测页面刷新/重新加载事件 我已经试过了,但在两种情况下都有效 $(window).bind('beforeunload',function(){ }); window.onbeforeunload = function (e) { } $(window).unload(function() { });​ 没有捕获浏览器关闭事件的特定方法 您只能在当前页面的unload上进行捕获 当您尝试刷新或重新加载页

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

我已经试过了,但在两种情况下都有效

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

        });

 window.onbeforeunload = function (e) {

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

});​

没有捕获浏览器
关闭事件的特定方法

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


当您尝试
刷新
重新加载
页面时,它也会起作用。

您可以尝试设置一些值,检查页面是否已全部就绪加载,然后仅在卸载前触发OnBeforeLoad

我使用了类似的方法:

window.onbeforeunload = function (e) {
            if(is_form_dirty())
                return '<@msg "elections.general.modal.confirm.changes.text" />';
        }
window.onbeforeunload=函数(e){
如果(是形式脏的())
返回“”;
}

设置应基于“会话”-因此,如果可能,请使用本地存储或仅使用普通的旧cookie

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

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

如果您只使用IE,您可以实现BHO,它可能会显式检测到浏览器关闭。

我就是这样做的

    <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>

var mie=(navigator.appName==“Microsoft Internet Explorer”)?真:假;
如果(!mie){
document.captureEvents(Event.MOUSEMOVE);
document.captureEvents(Event.MOUSEDOWN);
}
document.onmousemove=函数(e){mousePos(e);};
document.onmousedown=函数(e){mouseClicked();};
var-mouseClick;
var键控;
var-mouseX=0;
var-mouseY=0;
功能鼠标座(e){
如果(!mie){
mouseX=e.pageX;
mouseY=e.pageY;
}
否则{
mouseX=event.clientX+document.body.scrollLeft;
mouseY=event.clientY+document.body.scrollTop;
}
document.show.mouseXField.value=mouseX;
document.show.mouseYField.value=mouseY;
返回true;
}
window.onbeforeunload=函数(e)
{
e=e | | window.event;
变量y=e.pageY | e.clientY;
如果(y)