在我正在开发的聊天应用程序中,我必须调用一个在用户关闭聊天窗口时清理连接的函数。聊天窗口位于弹出浏览器中。 ("关闭"表示用户按下窗口的红色' x)。
我已经能够检测到close事件并使用onbeforeunload事件处理程序在IE11中调用该函数。
IE11代码:
window.onbeforeunload = function() {
cleanUp();
};
但是,现在我必须为Chrome做同样的事情,但似乎有一个"离开此页/留在这个页面"用户尝试退出时发生的弹出窗口(即,使用我的beforeunload处理程序)。 我宁愿用户可以干净地退出,也不会被这条消息打断。
此外,我的功能未在Chrome中的处理程序中调用。我不确定为什么。
有没有办法绕过Chrome中的弹出消息,还是这被认为是不好的做法?另外,如何在窗口关闭时确保调用我的函数?
我看到以下用于检测Chrome中的关闭事件:
Chrome代码:
var unloadEvent = function (e) {
var confirmationMessage = "Are you sure you want to leave?";
(e || window.event).returnValue = confirmationMessage;
return confirmationMessage;
};
window.addEventListener("beforeunload", unloadEvent);
我尝试修改它来调用我的函数:
Chrome代码已修改:
var unloadEvent = function (e) {
var confirmationMessage = "Are you sure you want to leave?";
(e || window.event).returnValue = confirmationMessage;
return cleanUp(confirmationMessage);
};
window.addEventListener("beforeunload", unloadEvent);
注意:我读到Chrome中的beforeunload处理需要返回String,所以我调用cleanUp函数从那里返回confirmMessage字符串,同时调用我的清理代码。
任何帮助表示感谢。
谢谢, Dearg