How do I detect popup blocker in Chrome?
Asked Answered
C

6

18

I have searched many issue in stack overflow and might be duplicate here Detect Popup

But not helped for me while testing in Chrome (tested v26.0.1410.64)
Following Approach Worked in IE and Firefox but not in Chrome

var popup = window.open(winPath,winName,winFeature,true);
 if (!popup || popup.closed || typeof popup.closed=='undefined'){
       //Worked For IE and Firefox
        alert("Popup Blocker is enabled! Please add this site to your exception list.");
        window.location.href = 'warning.html';
 } else {
        //Popup Allowed
        window.open('','_self');
        window.close();
} 

Any better solution that works for Chrome also?

Caesura answered 14/5, 2013 at 9:1 Comment(2)
why the down voter...what is the problem in question? I can't understandCaesura
Some people feel hacking around browser behaviors is a bad practice. Personally I find this useful.Edibles
C
21

Finally, it success by combining different answer from Stackoverflow's member
This code worked for me & tested in IE, Chrome & Firefox

var popup = window.open(winPath,winName,winFeature,true);
 setTimeout( function() {
    if(!popup || popup.outerHeight === 0) {
        //First Checking Condition Works For IE & Firefox
        //Second Checking Condition Works For Chrome
        alert("Popup Blocker is enabled! Please add this site to your exception list.");
         window.location.href = 'warning.html';
    } else {
        //Popup Blocker Is Disabled
        window.open('','_self');
        window.close();
    } 
}, 25);
Caesura answered 14/5, 2013 at 11:4 Comment(6)
If anyone comes across this and your pop up detection is not working still, make sure you are not attaching it to a trusted event: w3.org/TR/DOM-Level-3-Events/#trusted-eventsYogurt
works perfectly without the else clause, on firefox the else clause will actually launch an empty tab.Tropophilous
@SuYong, In else clause you can show your custom page... I did display blank page for my purpose....Caesura
This code doesn't currently work in Chrome on Windows. You need to increase the timeout, otherwise it will always say the popup blocker is blocking even when it isn't. I've changed the timeout to 250ms and it seems to work fine in all cases. This appears to be a recent change in Windows Chrome, as it was working before.Beauvais
It gives me an error in the console (and breaks the page): "(index):2210 Uncaught ReferenceError: winPath is not defined". the URL: dev.magazinuldecase.ro/adauga-anunt-vanzare-inchiriereNurmi
@RazvanZamfir you need to set winPath, OP had done so but hadn't shown it being set e.g. var winPath = document.URLBrigitte
C
4

I found it much more effective to use try-catch as follows:

var popup = window.open(winPath,winName,winFeature,true);
try {
    popup.focus();
} catch (e) {
    alert('popup blocked!');
}
Carioca answered 20/10, 2014 at 14:30 Comment(0)
T
3

Try Below..!!

var pop = window.open("about:blank", "new_window_123", "height=150,width=150");

// Detect pop blocker
setTimeout(function() {
if(!pop || pop.closed || pop.closed == "undefined" || pop == "undefined" || parseInt(pop.innerWidth) == 0 || pop.document.documentElement.clientWidth != 150 || pop.document.documentElement.clientHeight != 150){
pop && pop.close();
alert("Popups must be enabled.");
}else{
alert("Popups is enabled.");
pop && pop.close();
}}, 1000);

Look on below question

Detect blocked popup in Chrome

How do I detect whether popups are blocked in chrome

On Google It will more help you..

https://www.google.com/search?q=how+to+detect+a+blocked+popup+in+chrome

Typo answered 14/5, 2013 at 9:7 Comment(0)
P
0

I know this is "resolved", but this simple code worked for me detecting "Better Popup Blocker" extension in Chrome:

  if (!window.print) {
    //display message to disable popup blocker
  } else {
    window.print();
  }
}

Ockham's razor! Or am I missing something and it couldn't possibly be this simple?

Paradies answered 30/6, 2013 at 21:22 Comment(0)
S
0

I had used this method to open windows from js and not beeing blocked by Chrome. http://en.nisi.ro/blog/development/javascript/open-new-window-window-open-seen-chrome-popup/

Shantell answered 31/12, 2013 at 8:23 Comment(2)
answer with just outgoing links are not recommended. Please post a minimum gist as to what is in the link.Brandnew
I wouldn't worry too much, the method on the linked page does not work at all - as soon as you set the myPopup variable, Chrome blocks it!Mirellamirelle
H
0

The below code works in chrome,safari and firefox. I have used jquery for this.

var popupWindow = window.open("http://www.google.com","directories=no,height=100,width=100");

$(document).ready(function(e) {
    detectPopup();
    function detectPopup() {
    if(!popupWindow) {
        alert("popup will be blocked");

    } else {
        alert("popup will be shown");
        window.open('','_self');
        window.close();
    } 
}
});
Hauteloire answered 17/9, 2015 at 4:49 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.