我刚刚发现,如果新的URL是跨域的,在IE浏览器中window.opener打开的窗口中不可用window.open.如何检测IE中的窗口开启工具
如果窗口在我的域中启动,离开它,然后返回到我的域,则会发生这种情况.我试图在弹出窗口中进行社交注册(facebook,google等).完成后应该关闭新窗口并重定向开启器.
我知道Soundcloud正在关闭它,但我不知道如何.我看到URL从他们改为Facebook,然后关闭.
从第三方重定向回我的网站后,我运行:
var data = {
type : 'complete',
destination : '<?= $destination; ?>'
};
if ( window.opener ) {
window.opener.postMessage( JSON.stringify( data ), '*' );
window.close();
}
else {
alert( "Unable to find window" );
}
Run Code Online (Sandbox Code Playgroud)
它在IE中提醒,即使窗口最初是我的域,然后重定向到FB,然后重定向回到我.我想可能因为我打开我的网站并立即从PHP重定向可能是一个问题.然而,即使我打开我的网站,window.location.href = 'facebookssite.com'它仍然在返回时抱怨.
注意
社交注册不适用于谷歌,FB等iframe.我相信他们出于安全原因不允许他们.