2012-01-10 6 views
1

自分のサイトに自分のfbアカウントを接続するためのfacebook認証ページを読み込もうとしています。問題はそれが別のドメインだということです。コードは次のとおりですポップアップがクロムでブロックされているかどうかを検出する方法

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); 

このウィンドウが実際に開いたかどうかを確認するにはどうすればよいですか? 解決策を試しましたDetect blocked popup in Chrome

+0

[Chromeでブロックされたポップアップを検出](http://stackoverflow.com/questions/の可能重複668286/detect-blocked-pop-in-chrome) –

答えて

6

Chromeには基本的にバグがあります。ポップアップを隠していますが、それでも実行されますが、ウィンドウオブジェクトが戻ってくるので、定期的なチェックは機能しません。

ここでは私のために働いたソリューションです:

var popup = window.open(url); 

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

は、ここでの例作業:http://jsbin.com/uticev/3/

+2

これはChomeの新しいバージョンで明らかに壊れています。 "19.0.1084.52 m"で少なくとも私のために働かない – AHM

+1

それはまたChrome '21で働いていません.0.1180.77 m ' – Smit

+0

Chrome 25.0.1364.172では動作しません。 – Javaguru

6

私が検索し、検索し、そして最終的にこれを見つけたので、私は共有していた、他の人が言ったようbecuaseそれはクロームの新しいバージョンで壊れています。だから固定ソリューションはこれです:

var popUp = window.open(url); 
setTimeout(function() { 
    if (popUp.outerHeight === 0) { 
     alert('blocked'); 
    } 
}, 25); 
+0

popUp.outerHeightは '未定義です' – Roman

2

ちょうどRemy答えです。これは私のために働く。

 var win = window.open("", 'child','width=10,height=10,status=no,resizable=no'); 
     var objwin = new RegExp('object','gi'); 
     var isblock = false; 

     if(objwin.test(String(win))) { 
      if(typeof win.outerHeight ==="undefined" || parseInt(win.outerHeight)<10){ 
       isblock = true; 
      } 
      win.close(); 
     }else{ 
       isblock = true; 
     } 

     if(isblock){ 
      // do something here 
     } 
0

シンプル:

var popup = window.open(host); 
popup.onload = function(){ 
    if (!popup.innerHeight > 0){ 
     popup.close(); 
     // Popup blocked 
    } else { 
     // Popup enabled 
    } 
} 
0

このソリューションは、私のためによく働く:

loginWindow = window.open(url, '_blank', options); 

setTimeout(function() { 
    if (!loginWindow || loginWindow.closed || typeof loginWindow.closed == 'undefined' || parseInt(loginWindow.outerWidth) == 0) { 
     alert('Turn off pop-up blocker and try again.'); 
    } 
    else { 
     loginWindow.focus(); 
    } 
}, 500); 
+0

この作業はfirefox/opera/IEでもですか? – hipkiss