在IE9中,如何检测弹出窗口已重定向回同一域

时间:2013-03-12 12:46:32

标签: javascript internet-explorer-9

编辑:由于某种原因,间隔确实看到了某些内容,但崩溃并停止循环而没有进入if语句

这是我的流程。

  • 窗口通过window.open()
  • 在同一个域中打开弹出窗口
  • popup重定向到twitter
  • 弹出窗口重定向回同一个域(回调网址)
  • 需要将弹出窗口中的
  • 变量发送回窗口。

这在Chrome中运行良好,但在IE9上有效。

我尝试了什么(都在chrome中工作)

弹出式广告:

window.opener.function(data);
window.close();

在窗口中:

var checkInterval = setInterval(function(){
    if (win.variable){ // win = popup window!
        clearInterval(checkInterval);
        win.close();
       // works!
    }
}

但是在IE9中都不起作用。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

当弹出窗口进入twitter时,域名不再相同,所以在IE9中,当尝试读取页面上的变量时,它会崩溃。

要么检查window.opener是否可用(意味着你在同一个域上),并确保在访问变量(首选)之前将其保持相同,或者在try / catch中封装if语句

var checkInterval = setInterval(function(){
    try {
       if (win.variable){ // win = popup window!
           clearInterval(checkInterval);
           win.close();
          // works!
       }
    } catch (e) {}
}

答案 1 :(得分:0)

一种非常简单的方法是使用锚点

来传回变量

所以你的回调网址将如下所示:

http://example.com/index/#var1:value1,value2/var2:value3,value4 ...

使用hashchange plugin in jQuery可以让您的生活变得非常轻松,以便解决您的问题。

此外,您可以使用hasher micro library使用适用于IE9的核心Javascript