我正在为我正在为之工作的公司创建一个单点登录服务。它必须拥有自己的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);
答案 0 :(得分:0)
Javascript detect closing popup loaded with another domain是一个类似的问题。看看答案是否有助于您解决问题。