弹出窗口关闭后要触发的事件

时间:2013-10-18 13:19:44

标签: javascript html javascript-events

我正在为我正在为之工作的公司创建一个单点登录服务。它必须拥有自己的JavaScript库,就像Facebook为其oAuth服务提供的那样。我无法检测窗口何时关闭,以便我可以实现故障处理程序。

我尝试过使用window.onunload,但是当您登录文档卸载然后window.onunload开火时。我试图找到一种方法来检查是否有办法检查window是否处于关闭状态。虽然找不到太多运气。

之后,我尝试使用window检查window.CLOSED是否已经关闭。这不起作用,因为window.onunload事件在窗口关闭之前触发。

我查看了Mozilla Developer Network wiki上的window对象,找到了window.close事件。我试了一下,但由于某种原因它没有开火。

到目前为止我已实施的代码:

PopUp - 登录:

window.onunload = function (e) {
    try {
        window.opener.postMessage([false], '*');
    } catch (e) {}
};

PopUp - 登录成功:

window.opener.postMessage([true, 'data' ], '*');
window.close();

开瓶器:

var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent, function (e) {
    if (e.data[0]) {
        this._data = JSON.parse(e.data[1]);
        return _fireEvent('success', e.data[1]);
    } else {
        if (win.CLOSED)
            return _fireEvent('failure');
    }
}, false);

1 个答案:

答案 0 :(得分:0)

Javascript detect closing popup loaded with another domain是一个类似的问题。看看答案是否有助于您解决问题。