在我的聊天应用程序中,我需要从用户那里得到确认,当我的应用程序关闭时。
因此,我使用window.onbeforeunload
作为确认警报,使用window.onunload
作为logout()
。
1.但这两个功能都在IE和Chrome中工作。(应用程序工作正常)
window.onbeforeunload
在Opera中不工作,我的消息不会在Firefox中显示。window.onunload
无法在Safari、Opera和Firefox中运行。
我的JavaScript代码将是:
// Used for confirmation, to closing the window
window.onbeforeunload = function () {
return "Are you sure want to LOGOUT the session ?";
};
// Used to logout the session, when browser window was closed
window.onunload = function () {
if((sessionId != null)&&(sessionId!="null")&& (sessionId != ""))
logout();
};
我还在JQuery中尝试了相同的函数,
<script type="text/javascript">
$(window).on('beforeunload', function() {
return 'Are you sure want to LOGOUT the session ?';
});
$(window).unload(function() {
if ((sessionId != null) && (sessionId != "null") && (sessionId != "")) {
logout();
}
});
</script>
6条答案
按热度按时间iqxoj9l91#
不幸的是,你正在使用的方法在那些浏览器中是不支持的。为了支持我的答案(这种不支持的行为),我在下面给出了链接。
onbeforeunload
和onunload
无法在opera
中运行...以支持此操作onbeforeunload in Opera
http://www.zachleat.com/web/dont-let-the-door-hit-you-onunload-and-onbeforeunload/
尽管
onunload
事件不能完全起作用,但如果用户单击链接以离开包含未保存表单的页面,则可以使用onunload
显示警告。onunload
无法在safari
中运行...无法支持此https://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
您可以尝试在safari浏览器中使用
pagehide
事件来代替onunload
。onunload
无法在firefox
中运行...无法支持此功能https://bugzilla.mozilla.org/show_bug.cgi?id=681636
他们还没有拿出一个解决方案,在FF太。
rkttyhzu2#
下面是IE、火狐和Chrome的工作解决方案:
2ekbmq323#
我能够让它在IE和FF中使用jQuery的:
代替:卸载、卸载时或卸载前
qlzsbp2j4#
通过将 AJAX 异步请求更改为同步请求,我在除Opera之外的所有浏览器中获得了
onunload
的解决方案。它适用于除Opera之外的所有浏览器。
velaa5lx5#
onunload事件并不是在所有浏览器中都被调用的。更糟糕的是,你不能检查onbeforeunload事件的返回值。这阻止了我们实际执行注销功能。
不过,您可以绕过这个问题。
首先在onbeforeunload事件中调用logout,然后提示用户。如果用户取消注销,使用onfocus事件自动重新登录。有点落后,但我认为应该可以工作。
mefy6pfw6#
火狐根本不显示自定义的onbeforeunload信息。Mozilla说他们是在保护最终用户免受可能显示误导性文本的恶意网站的攻击。