Aplikacja, którą tworzę, w pewnych cyrkumstancjach wymaga odblokowanych popupów. Postępowanie nasuwa się samo - trzeba wykryć czy popupy są odblokowane i pokazać jakieś ostrzeżenie, jeśli nie są. Myślałem, że będzie to kwadrans roboty...
No i faktycznie byłby to kwadrans, jeśli nie odpaliłbym więcej niż jednej przeglądarki. Jak to w świecie webdev bywa, to samo raz działa tak, a raz srak, w zależności od tego co jest naszym oknem na świat.
Poniżej efekt ponad dwóch godzin prób i błędów, który (jak mi się wydaje) działa w IE, FF, Chrome i Operze:
1: function detectPopupsPermission() {
2: var popup = window.open('about:blank', '', 'directories=no,height=10,width=10,menubar=no,resizable=no,scrollbars=no,status=no,titlebar=no,location=no');
3:
4:
5: if (!popup) {
6: popupsBlocked();
7: }
8:
9: else if (/opera/i.test(navigator.userAgent) && !popup.outerWidth) {
10: popupsBlocked();
11: }
12:
13: else if (/chrome/i.test(navigator.userAgent)) {
14:
15: setTimeout(function() {
16: if (popup.outerWidth === 0) {
17: popupsBlocked();
18: } else {
19: popupsAllowed();
20: }
21: }, 100);
22: }
23: else {
24: popupsAllowed();
25: }
26: };
Sugestie, opinie?