【发布时间】:2013-09-08 15:54:06
【问题描述】:
我刚刚发现window.opener 在通过window.open 打开的窗口中不可用,如果新的URL 是跨域的,在IE 中。 How do I detect window opener in IE
如果窗口在我的域中启动,离开它,然后返回到我的域,就会发生这种情况。我正在尝试在弹出窗口中进行社交注册(facebook、google 等)。完成后,它应该关闭新窗口并重定向开启器。
我知道 Soundcloud 正在实现这一目标,但我不知道如何实现。我看到 URL 从他们的变为 Facebook,然后关闭。
从第 3 方重定向回我的网站后,我运行以下命令:
var data = {
type : 'complete',
destination : '<?= $destination; ?>'
};
if ( window.opener ) {
window.opener.postMessage( JSON.stringify( data ), '*' );
window.close();
}
else {
alert( "Unable to find window" );
}
它在 IE 中发出警报,即使该窗口最初是我的域,然后重定向到 FB,然后又重定向回我。我想可能是因为我打开我的网站并立即从 PHP 重定向,这可能是个问题。然而,即使我打开我的网站,window.location.href = 'facebookssite.com' 在返回时仍然抱怨。
注意
社交注册不适用于iframe 内的 google、FB 等。我相信他们出于安全原因不允许这样做。
【问题讨论】: