如何检测Chrome中是否阻止了另一个域的弹出式窗口?

时间:2011-05-17 04:28:10

标签: javascript google-chrome popupwindow

您可以使用此问题的解决方案检测Chrome中是否已阻止弹出窗口:Detect blocked popup in Chrome

但是,似乎检测到的解决方案是同一域上的页面的弹出窗口。我想知道是否有办法检测另一个域上的页面弹出窗口是否被阻止?

var newWindow = window.open('http://www.google.com/'); // this domain is something.com
if (newWindow) {
    setTimeout(function() {
        // Is there a way to detect if newWindow was blocked?
    }, 500);
}

1 个答案:

答案 0 :(得分:3)

您将受到所有通常相同的原始政策的约束,我建议您直接阅读它们:http://en.wikipedia.org/wiki/Same_origin_policy。简而言之,您正在尝试进行跨域通信,这是浏览器安全模型所禁止的。为了解决这个问题,有服务器端代理,JSONP,Flash,document.domain(但只有当它是两个不同的子域),以及一系列根据您的支持要求不同成功的黑客攻击以及您究竟是什么试图做。

您能告诉我们更多关于您的浏览器支持要求的信息吗?你能使用XHR Level 2吗?您在弹出窗口中尝试加载的页面是什么?