如何关闭 Internet Explorer 中的弹出窗口?

How to close a popup in Internet Explorer?

我需要使用 ajax 查询第三方站点。为此,我需要 cookie,我通过在隐藏框架中加载网站页面来检索这些 cookie。但是,我刚刚看到如果站点不提供 P3P 策略,IE(至少 11)会阻止框架中设置的 cookie。

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

这是一些测试代码:

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创建的windows(或者要求确认),但是我没看到像我这样的跨域.顺便说一句,FF 和 Chrome 没有问题。有什么办法吗?

好的,所以我终于明白了。它与同源策略无关。问题是我在通过 http://localhost/ url. If I access the same page with http://127.0.0.1/ 访问的页面中测试上面的代码,而不是 foo 变量不为 null 并且可以关闭弹出窗口。

如果有人知道为什么 IE 中的某些限制适用于 localhost 而不是 127.0.0.1,不客气。