我正在为我工作的公司创建单点登录服务。它必须拥有自己的 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);