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?
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);
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!');
}
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
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?
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/
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();
}
}
});