绕过浏览器窗口上的Chrome弹出窗口关闭

时间:2016-05-04 13:18:50

标签: javascript google-chrome cross-browser onbeforeunload

在我正在开发的聊天应用程序中,我必须调用一个在用户关闭聊天窗口时清理连接的函数。聊天窗口位于弹出浏览器中。 ("关闭"表示用户按下窗口的红色' 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

0 个答案:

没有答案