Как определить блокировку всплывающих окон в Chrome?
Я искал много проблем в переполнении стека и мог быть дублирован здесь Обнаружение всплывающих окон
Но not helped for me
при тестировании в Chrome (проверено v26.0.1410.64)
Следующий подход Worked in IE and Firefox
, но 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();
}
Любое лучшее решение, которое работает и для Chrome?
Ответы
Ответ 1
Наконец, это успех, объединив другой ответ от элемента Stackoverflow
Этот код работал у меня и тестировался в 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);
Ответ 2
Попробуйте ниже..!!
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);
Посмотрите ниже вопроса
Обнаружение заблокированного всплывающего окна в Chrome
Как определить, заблокированы ли всплывающие окна в chrome
В Google Это поможет вам...
https://www.google.com/search?q=how+to+detect+a+blocked+popup+in+chrome
Ответ 3
Я нашел гораздо более эффективным использование try-catch следующим образом:
var popup = window.open(winPath,winName,winFeature,true);
try {
popup.focus();
} catch (e) {
alert('popup blocked!');
}
Ответ 4
Я знаю, что это "разрешено", но этот простой код помог мне обнаружить расширение "Better Popup Blocker" в Chrome:
if (!window.print) {
//display message to disable popup blocker
} else {
window.print();
}
}
Окхам бритва! Или я что-то упускаю, и это не может быть так просто?
Ответ 5
Я использовал этот метод для открытия окон из js, а не для Chrome.
http://en.nisi.ro/blog/development/javascript/open-new-window-window-open-seen-chrome-popup/
Ответ 6
Нижеприведенный код работает в chrome, safari и firefox. Я использовал jquery для этого.
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();
}
}
});