我刚刚发现,如果新 URL 是跨域的,则在 IE 中window.opener
通过打开的窗口中不可用window.open
。如何在 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'
返回时它仍然抱怨。
笔记
社交注册不适用于 .google、FB 等iframe
。我相信他们出于安全原因不允许他们。