jPortal.pl, to serwis dla miłośników JavaScript. Znajdziesz tutaj ciekawe porady oraz tutoriale, czyli porady "za rączkę", aby zrobić fajne efekty. Dowiesz się też jak tworzyć dobrej jakości kod.
Skoro J ("dżej" - ten gość po lewej) umie, to Ty też podołasz temu wyzwaniu :).

Jak wykryć czy przeglądarka blokuje popup?

Opublikowany: 04.10.2011 12:05:31 | Komentarzy 2

W jednym z projektów dostałem zgłoszenie (błąd), że aplikacja się wysypuje. Jak się okazało, na załączonym screenie przez testera, problemem jest blokowanie wyskakujących okienek. Pojawiła się potrzeba, by sprawdzać ten "issue" i pokazać użytkownikowi odpowiednią informację.

Problem z pozoru wydaje się prosty. Na chłopski rozum, blokowanie okienek wygląda mniej więcej tak:

  1. Inicjuję otwarcie nowego okna.
  2. Przeglądarka je blokuje (zmienną z nowym oknej w jakiś sposób "czyści").
  3. Pojawia się informacja, że zostało zablokowane okienko.

Skoro tak, to poniższy kod powinien zadziałać bez problemu:

var okno = window.open("/plik.html", "nazwaOkna", "width=1200,height=600,scrollbars,resizable,menubar");
if (!okno) {
   window.alert("Przeglądarka blokuje okienka");
}

I wiecie co? Działa. Działa poprawnie w FF7 i IE8 :). Chrome i Opera poległy.

W tym momencie, wychodzą subtelne różnice między przeglądarkami.

Na szczęście, aby wykryć blokowanie okienek w Chromie i Operze trzeba posłużyć się sztuczką. W przypadku Chrome musimy sprawdzić czy rozmiar okna nie jest przypadkiem równy zeru. W Operze na sztuczka nie przejdzie. Tutaj trzeba inną zastosować - sprawdzamy czy np. któraś z właściwości nie istnieje.

Ostatniecznie, kod wygląda następująco:

var okno = window.open("/plik.html", "nazwaOkna", "width=1200,height=600,scrollbars,resizable,menubar");
if (!okno || okno.innerHeight === 0 || !okno.top) {
   window.alert("Przeglądarka blokuje okienka");
}

Tagi: javascript window javascript window.open blokowanie okienek js

Komentarze

Gavatar Ender
04.10.2011, Ender napisał/-a: Uuu, nie wiedziałem, że aż tak trzeba kombinować, żeby zwykłe zablokowanie okienka rozpoznać.
Gavatar rexty
10.10.2011, rexty napisał/-a: Ten sposób może się przydać. Na szczęście używam FF więc obędzie się bez zbędnych kombinacji.

Dodaj komentarz