2012-01-10 63 views
1

我試圖加載facebook認證頁面供用戶連接他們的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); 

如何找出這個窗口是否實際打開? 我試過Detect blocked popup in Chrome

+0

的[檢測阻止彈出在Chrome]可能重複(http://stackoverflow.com/questions/ 668286 /檢測阻止彈出在鉻) – 2013-07-25 15:53:37

回答

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 2012-05-30 15:54:03

+1

它也不適用於Chrome '21.0.1180.77 m' – Smit 2012-08-15 07:23:25

+0

不適用於Chrome 25.0.1364.172。 – Javaguru 2013-05-22 07:05:45

6

我尋尋覓覓,終於找到這一點,所以我不得不分享,監守像其他人說,它在更新版本的Chrome中被破解。所以固定的解決方案是這樣的:

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

對我來說popUp.outerHeight是'undefined' – Roman 2013-07-16 21:34:55

2

剛剛修改雷米的答案。這對我有用。

 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 2016-06-10 09:35:06

相關問題