Как получить информацию, если ваше всплывающее окно было заблокировано? (HTML JS PHP) - PullRequest
2 голосов
/ 04 мая 2010

Как получить информацию, если ваше всплывающее окно было заблокировано блокировщиком всплывающих окон? (ПРИМЕР КОДА НУЖЕН)

Ответы [ 2 ]

6 голосов
/ 04 мая 2010

С

window.open (URL, windowName[, windowFeatures]);

вы открываете новое всплывающее окно и как URL вы помещаете html-страницу. На этой всплывающей странице вы пишете некоторую JS, в которой вы можете использовать переменную window.opener, чтобы иметь доступ ко всем JS со своей главной страницы. Затем вы можете на всплывающей странице установить флаг - например:

index.html

<html>
  <body>
    <script type="text/javascript">
      var opened = false;
      window.open('popup.html');
      // and here some loop in mooTools/jQuery/or
      // something to look up for variable changes
    </script>
  </body>
</html>

popup.html

<html>
  <body>
    <script type="text/javascript">
      window.opener.opened = true;
    </script>
  </body>
</html>

Я сделаю это таким образом.

Редактировать

А вот еще один способ использования PHP:

В вашем popup.php вы можете установить какой-нибудь флаг в сеансе

$_SESSION['opened'] = true;

А в index.php вы должны написать что-то в AJAX, запрашивая анальное действие, которое вернет вам значение из $_SESSION.

0 голосов
/ 04 мая 2010

Короткий ответ: вы не можете, если вы действительно не хотите наказать своих пользователей.

Всплывающие окна обычно генерируются на стороне клиента с использованием JavaScript, поэтому вы не можете знать, было ли всплывающее окно заблокировано с сервера, если вы не наблюдаете, как сравнивать запросы на содержимое страницы с запросами на содержимое всплывающего окна с того же IP-адреса. Этот метод производит невероятное количество ложных срабатываний и ложных отрицаний, потому что, если пользователь обновляет страницу, он может не получить всплывающее окно во второй раз, но, возможно, он получил его в первый раз. Или всплывающее окно может быть сгенерировано, и содержимое в этом окне может загружаться независимо от содержимого на остальной части страницы. В результате единственное рациональное решение совершенно ненадежно.

Итак, вы можете написать тест JavaScript, чтобы измерить, было ли всплывающее окно сгенерировано так, как это должно быть при запуске JavaScript. Когда запускается JavaScript, но всплывающее окно не существует сразу, вам придется отключить AJAX, чтобы отправить вам предупреждение, чтобы вы динамически уведомили, что всплывающее окно не удалось загрузить. Однако, если бы я когда-либо видел подобный код, я бы занес весь ваш домен в черный список от моего предприятия и предупредил бы крупные фирмы по обеспечению безопасности, что вы либо вредоносный веб-сайт, либо взломаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...