Юридически избегая блокировки всплывающих окон

Что заставляет некоторые браузеры видеть мой код незапрашиваемым?

У меня есть веб-сайт, посвященный помощи людям с интерактивными сеансами. Он начинается с того, что пользователь нажимает [Begin], чтобы это было согласованное действие. Это должно (1) открыть всплывающее окно, а (2) перенаправить первую страницу на конечную страницу, как показано ниже:

<head>  
<SCRIPT language="JavaScript">
      function openwindow(){window.open("{INTERACTION}","interaction","resizable=0,width=800,height=600,status=0");}</SCRIPT>
</head>   
<body>
<FORM action="end.php" method="{METHOD}" >  
<input type="submit"  class="button" 
       onClick="javascript: openwindow()" 
       value="Begin" />
</FORM>
</body>

Как сказано, это не попытка открыть незапрашиваемое всплывающее окно, но некоторые настройки IE и Chrome, похоже, рассматривают его как таковую. Я пытался получить исправление, самое последнее переваривание этого сообщения.

В нем Бобин комментирует

в эти дни вам не нужно задавать вопрос "был ли мой незапрашиваемый всплывающий экран заблокирован?", потому что ответ неизменно "да" - все основные браузеры включили блокировщик всплывающих окон по умолчанию. Лучший подход - это когда-либо только window.open() в ответ на прямой щелчок, который почти всегда разрешен. Я очень счастлив купить этот принцип, потому что просто хочу открыть всплывающее окно.

Что заставляет некоторые браузеры видеть мой код незапрашиваемым?

Буду признателен за любую помощь, которую вы могли бы мне дать. (как вы, возможно, догадались, клиентская сторона - это не моя сумка, и эта тема искала меня целую вечность).

Большое спасибо заранее (и пальцы скрещены) Giles

Ответы

Ответ 1

Нельзя много делать. Вы можете попросить своих пользователей отключить блокировщики всплывающих окон или сообщить им, что блокировщик всплывающих окон активирован, проверяя возвращаемый объектом окна объект window.open()

например.

var w = window.open('http://domain.com');
if(!w) { 
   //an alert in this example
   alert('oops..seems like a pop-up blocker is enabled. Please disable');
}

вы можете найти другой способ и попробовать то, что предлагает Брэд.

Ответ 2

Вы ничего не можете поделать. Некоторые блокирующие всплывающие окна все еще блокируют все, даже в ответ на щелчок пользователя. Лучшее, что вы можете сделать, это предложить пользователям отключить блокировщики всплывающих окон или найти другой способ сделать то, что вы хотите сделать. Популярным методом является div, который отображается поверх всех остальных на вашей странице, например Lightbox.

Есть много плагинов jQuery, которые делают это проще.

Ответ 3

У вас есть (как минимум?) 2 варианта:

  • если вы хотите использовать всплывающие окна, отображать очень заметное предупреждение для своих пользователей, указывая им инструкции о том, как настроить свой браузер для белого списка вашего домена (например, баннеры, которые появляются поверх StackOverlow.com, когда вы получаете новые привилегии или даже как баннеры, которые Chrome показывает для действий - они также основаны на веб-интерфейсе);
  • используйте iFrame и загрузите его содержимое на основе щелчка пользователя.