2011-07-08 63 views
15

我想在我的应用程序中捕获浏览器关闭事件并向用户显示一个确认框。 我正在使用JSF 2.0和richfaces 4.0。如何捕捉浏览器关闭事件?

+0

这不是一个Java问题(你可以用.Net或纯HTML/JS的方式完全相同的Java方式)。 –

回答

1

将处理程序附加到unload事件。

+0

我尝试了onbeforeunload事件。但问题是当我刷新页面或做任何表单提交时,它也调用onbeforeunload事件。 – Lan

+0

有没有办法区分这些;浏览器只能告诉你当前的文档即将被替换。这不会给你一个想法*为什么* –

5

onbeforeunload

< body onbeforeunload="alert('Closing');"> 

实施例:

<html> 
<head> 
<title>`onbeforeunload` Event Demo</title> 
</head> 
<body onbeforeunload="return 'Are you sure you want to exit ?';"> 
</body> 
</html> 
+0

'beforeunload'事件是为了返回一个'字符串'。 [文件](https://developer.mozilla.org/en/DOM/window.onbeforeunload)。 – alex

+0

@Alex感谢您的信息。 OP只是想要一个函数调用 –

6

使用beforeunload事件。

window.onbeforeunload = function(event) { 

    event = event || window.event; 

    var confirmClose = 'Are you sure?'; 

    // For IE and Firefox prior to version 4 
    if (event) { 
     event.returnValue = confirmClose; 
    } 

    // For Safari 
    return confirmClose; 

} 

请记住,除了关闭窗口,例如重新加载和表单提交之外,这将会触发其他事件。

+1

对于Alt-F4是一样的,关闭导航器(tab或X),也是F5键,回发并重装? – Kiquenet

17
window.onbeforeunload = function() 
{ 
    var shallIAlertUser = Do_Whatever(); //get boolen value 
    if (shallIAlertUser) { 
    //this will alert user 
    return 'Are you sure?'; 
    } 
    else { 
    //this wont 
    window.onbeforeunload = undefined; 
    } 
};