Hum*_*ing 73 javascript jquery javascript-events
在我的聊天应用程序中,当我的应用程序关闭时,我需要得到用户的确认.
所以我使用了window.onbeforeunload确认警报和window.onunloadlogout().
但这两个功能都在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();
};
Run Code Online (Sandbox Code Playgroud)
我也尝试了与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>
Run Code Online (Sandbox Code Playgroud)
Fre*_*ser 87
遗憾的是,您使用的方法在这些浏览器中不受支持.为了支持我的答案(这种不支持的行为),我在下面给出了链接.
onbeforeunload并onunload没有工作opera...来支持这一点
Opera中的onbeforeunload
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/
您可以尝试pagehide在safari浏览器中使用该事件代替onunload.
onunload不工作firefox......支持这一点
他们还没有在FF中提出解决方案
祝你好运欢呼.
小智 42
这是ie,firefox和chrome的工作解决方案:
var myEvent = window.attachEvent || window.addEventListener;
var chkevent = window.attachEvent ? 'onbeforeunload' : 'beforeunload'; /// make IE7, IE8 compitable
myEvent(chkevent, function(e) { // For >=IE7, Chrome, Firefox
var confirmationMessage = 'Are you sure to leave the page?'; // a space
(e || window.event).returnValue = confirmationMessage;
return confirmationMessage;
});
Run Code Online (Sandbox Code Playgroud)
nat*_*eld 17
我能够使用jQuery在IE和FF中使用它:
$(window).bind('beforeunload', function(){
});
Run Code Online (Sandbox Code Playgroud)
而不是:unload,onunload或onbeforeunload
Hum*_*ing 13
我onunload通过将Ajax异步请求更改为同步请求,在除Opera之外的所有浏览器中获得了解决方案.
xmlhttp.open("POST","LogoutAction",false);
Run Code Online (Sandbox Code Playgroud)
它适用于除Opera以外的所有浏览器.
并未在所有浏览器中调用onunload事件.更糟糕的是,您无法检查onbeforeunload事件的返回值.这使我们无法实际执行注销功能.
但是,你可以解决这个问题.
在onbeforeunload事件中首先调用logout.然后提示用户.如果用户取消其注销,则使用onfocus事件自动重新登录.有点倒退,但我认为它应该工作.
'use strict';
var reconnect = false;
window.onfocus = function () {
if (reconnect) {
reconnect = false;
alert("Perform an auto-login here!");
}
};
window.onbeforeunload = function () {
//logout();
var msg = "Are you sure you want to leave?";
reconnect = true;
return msg;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
180035 次 |
| 最近记录: |