2015-01-14 32 views
0

我需要用ajax查询第三方网站。为此,我需要cookies,通过将网站页面加载到隐藏框架中来检索cookie。但是,我刚刚看到,如果网站没有提供P3P政策,则IE(至少11)会阻止设置为框架的Cookie。如何关闭Internet Explorer中的弹出窗口?

为了解决这个问题,我最初认为在弹出窗口中打开网站然后关闭它。但是这似乎是不可能的,因为window.open的返回值是null如果url不是来自同一个域。

下面是一些测试代码:

var foo = window.open(url); 
setTimeout(function(){ 
    foo.close(); // fails in IE as foo is null if url is 3rd-party 
}, 2000); 

我见过的限制,如Window.close可以用JS创建仅关闭窗口(或要求确认),但我还没有看到关于任何交叉域如我的情况。顺便说一句,FF和Chrome没有问题。有没有办法做到这一点?

+0

由于相同的原产地政策,您无法触摸窗口。 – epascarello

+0

即使它是我的代码,它首先打开它?另外,Firefox和Chrome会有没有问题呢? – Antoine

+0

是的,即使你的代码打开它。没关系。 – epascarello

回答

0

好的,所以我终于明白了。它与相同的原产地政策无关。问题是我在通过http://localhost/ url访问的页面上测试了上述代码。如果我用http://127.0.0.1/访问相同的页面,则foo变量不为空,并且可以关闭弹出窗口。

如果有人知道为什么IE中的某些限制适用于本地主机而不是127.0.0.1,那么欢迎您。