Як хороша практика, я думаю, що це гарна ідея перевірити, чи не було заблоковано спливаюче вікно, і вжити заходів у випадку. Потрібно знати, що window.open має повернене значення, і це значення може бути нульовим, якщо дія не вдалася. Наприклад, у наступному коді:
function pop(url,w,h) {
n=window.open(url,'_blank','toolbar=0,location=0,directories=0,status=1,menubar=0,titlebar=0,scrollbars=1,resizable=1,width='+w+',height='+h);
if(n==null) {
return true;
}
return false;
}
якщо спливаюче вікно заблоковано, window.open поверне нульове значення. Так функція поверне помилкову.
Як приклад, уявіть виклик цієї функції безпосередньо з будь-якого посилання на target="_blank"
: якщо спливаюче вікно буде успішно відкрито, повернення
false
заблокує дію посилання, інакше, якщо спливаюче вікно заблоковано, повернення true
дозволить поведінці за замовчуванням (відкрити нове вікно _blank) та продовжити .
<a href="http://whatever.com" target="_blank" onclick='return pop("http://whatever.com",300,200);' >
Таким чином у вас буде спливаюче вікно, якщо воно працює, і вікно _ порожнє, якщо ні.
Якщо спливаюче вікно не відкриється, ви можете:
- відкрийте порожнє вікно, як у прикладі, і продовжуйте роботу
- відкрити підроблене спливаюче вікно (кадр всередині сторінки)
- Повідомте користувача ("будь ласка, дозвольте спливаючі вікна для цього сайту")
- відкрити порожнє вікно, а потім повідомити користувача тощо.