web-dev-qa-db-fra.com

Comment détecter un bloqueur de popup dans Chrome?

J'ai cherché plusieurs problèmes dans le débordement de pile et peut être dupliqué ici Detect Popup

Mais not helped for me lors du test dans Chrome (testé v26.0.1410.64)
Approche suivante Worked in IE and Firefox mais 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();
} 

Une meilleure solution qui fonctionne pour Chrome également?

15
Surendra Jnawali

Enfin, il réussit en combinant des réponses différentes des membres de Stackoverflow
Ce code a fonctionné pour moi et a été testé dans 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);
19
Surendra Jnawali

J'ai trouvé beaucoup plus efficace d'utiliser try-catch comme suit: 

var popup = window.open(winPath,winName,winFeature,true);
try {
    popup.focus();
} catch (e) {
    alert('popup blocked!');
}
2
cw24

Essayez ci-dessous .. !!

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

Regardez ci-dessous la question

Détecter les popups bloqués dans Chrome

Comment détecter si des popups sont bloqués en chrome

Sur Google, cela vous aidera plus ..

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

2
Kishan Patel

Je sais que cela est "résolu", mais ce code simple a fonctionné pour moi en détectant l'extension "Better Popup Blocker" dans Chrome:

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

Le rasoir d'Ockham! Ou est-ce que je manque quelque chose et ça ne pourrait pas être aussi simple?

0
Adam

J'avais utilisé cette méthode pour ouvrir les fenêtres depuis js et ne pas être bloqué par Chrome. http://en.nisi.ro/blog/development/javascript/open-new-window-window-open- vu-chrome-popup/

0
Cooper M.

Le code ci-dessous fonctionne en chrome, safari et firefox. J'ai utilisé jquery pour cela.

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();
    } 
}
});
0
user5345000