1

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

我尝试过使用window.onunload,但是在您登录文档的那一刻,文件就会卸载,然后就window.onunload着火了。我试图找到一种方法来检查是否有方法检查是否window处于关闭状态。虽然没有太多运气找到它。

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

window在 Mozilla Developer Network wiki 上查看了该对象并找到了该window.close事件。我试过了,但由于某种原因它没有触发。

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

弹出窗口 - 登录:

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

弹出窗口 - 登录成功:

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);
4

1 回答 1

0

Javascript 检测关闭加载另一个域的弹出窗口是一个类似的问题。看看那里建议的答案是否可以帮助您解决您遇到的问题。

于 2013-10-19T12:08:16.017 回答