Javascript IE中同一域上的Window.opener null

Javascript IE中同一域上的Window.opener null,javascript,cross-domain,window.opener,Javascript,Cross Domain,Window.opener,我对此进行了广泛的研究(有许多类似的问题),但我没有找到我想要的确切答案 我正在创建一个单点登录小部件,因此用户流如下所示: 用户单击“登录”打开窗口(域1)>登录流(域2)>登录页(域1) 以下是我在登录页上使用的代码: <html> <head> <title>Redirect</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8

我对此进行了广泛的研究(有许多类似的问题),但我没有找到我想要的确切答案

我正在创建一个单点登录小部件,因此用户流如下所示:

用户单击“登录”打开窗口(域1)>登录流(域2)>登录页(域1)

以下是我在登录页上使用的代码:

<html>
<head>
    <title>Redirect</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript">
    if (window.opener && !window.opener.closed) {
        setTimeout(function(){
            window.opener.location.href = "[some URL]";
            window.close();
        },2000);
    }
    </script>
</head>
<body>
    <p>Logging you in...</p>
</body>
</html>

重新使用
if(window.opener&!window.opener.closed){
setTimeout(函数(){
window.opener.location.href=“[some URL]”;
window.close();
},2000);
}
让你登录

将登录页放在末尾的目的是为了消除访问window.opener时出现的跨域问题

这在除IE之外的所有浏览器中都很有魅力。IE说window.opener为空,即使我已返回到自己的域

到目前为止,我所读到的任何东西都不能真正解决这个问题。我认为一定有办法做到这一点,因为有这么多的网站都在使用FSSO。不幸的是,我们无法找到弹出窗口的替代方案


由于浏览器相关的安全性,这在IE中是不可能做到的吗?我唯一能想到的另一件事是给父母安排某种类型的倾听者,让他们等待孩子关上。呃。

似乎问题与我们公司IE构建中设置的安全区域有关。不同的领域被划分为不同的区域。显然,IE在通过这些区域时会丢失window.opener的值,而不必重置它。当在IE的外部构建上进行测试时,它起作用了

问题似乎与我们公司IE构建中设置的安全区域有关。不同的领域被划分为不同的区域。显然,IE在通过这些区域时会丢失window.opener的值,而不必重置它。当在IE的外部构建上进行测试时,它起作用了

我实际上遇到了完全相同的问题。我以为我在Chrome上一切都很好,然后我尝试了IE,果然,opener是空的。我已经在其他网站上看到了这一点,并且它在IE中工作,所以它可以实现。我即将开始钻入js并在其中一个网站上流动,但如果有人有一个简单的答案,我洗耳恭听。其他信息。。。从我的域中,我在同一域中打开一个弹出窗口(window.open)。然后,该弹出窗口重定向到oauth服务器(yahoo、google等),该服务器可以回调原始域。window.opener为空。如果您发现了什么,请告诉我!如果我有什么想法,我会更新的。我实际上遇到了完全相同的问题。我以为我在Chrome上一切都很好,然后我尝试了IE,果然,opener是空的。我已经在其他网站上看到了这一点,并且它在IE中工作,所以它可以实现。我即将开始钻入js并在其中一个网站上流动,但如果有人有一个简单的答案,我洗耳恭听。其他信息。。。从我的域中,我在同一域中打开一个弹出窗口(window.open)。然后,该弹出窗口重定向到oauth服务器(yahoo、google等),该服务器可以回调原始域。window.opener为空。如果您发现了什么,请告诉我!如果我有什么想法,我会更新的。