如何检测是否在chrome中阻止了弹出窗口

Shw*_*nka 1 javascript popup

我正在尝试加载facebook auth页面,以便用户将他们的fb帐户与我的网站连接.问题是它是一个不同的领域.代码如下

var left = (screen.width/2)-(550/2);
    var top = (screen.height/2)-(250/2);
    fbPopUp = window.open(authorizeURL,'fbWindow','menubar=0,status=0,titlebar=0,toolbar=0,resizable=1,width=400,height=275, top='+top+' , left='+left);
Run Code Online (Sandbox Code Playgroud)

如何确定此窗口是否实际打开?我尝试在Chrome检测阻止弹出窗口的解决方案

Rem*_*arp 7

基本上Chrome中存在一个错误.虽然它隐藏了弹出窗口,但它仍然执行,你仍然得到窗口对象 - 所以定期检查不起作用.

这是适用于我的解决方案:

var popup = window.open(url);

if (popup) {
  popup.onload = function () {
    console.log(popup.innerHeight > 0 ? 'open' : 'blocked');
  }
} else {
  console.log('blocked');
}
Run Code Online (Sandbox Code Playgroud)

这里的工作示例:http://jsbin.com/uticev/3/

  • 在较新版本的Chome中,这显然已经破裂.至少在"19.0.1084.52 m"中对我不起作用 (2认同)

小智 6

我正在搜索和搜索,最后发现了这个,所以我不得不分享,因为其他人说它在较新版本的Chrome中被破坏了.所以固定的解决方案是这样的:

var popUp = window.open( url );
setTimeout( function() {
   if ( popUp.outerHeight === 0 ) {   
      alert('blocked'); 
   }
}, 25);
Run Code Online (Sandbox Code Playgroud)