Как обойти блокировку для window.open

Статус
В этой теме нельзя размещать новые ответы.

Abuza

Участник
Регистрация
7 Май 2007
Сообщения
176
Реакции
8
Подскажите пожалуйста как обойти блокировку всплывающего окна при его вызове.
Есть форма с которой вызывается php файл, в файле идет проверка условия да/нет и если нет, то необходимо чтоб сработал вызов двух окон, одно открывается вместо страницы с формой, а другое в новом окне, которое почему то блокируется.
Подскажите плз, почему блокируется окно по нижеприведенному примеру и если возможно пути обхода.
Спасибо.
PHP:
if (no) {
echo "
 <script language='JavaScript'>
 new_window=window.open('URL'); 
 new_window.focus(); 
 window.location = 'URL';
 </script>";
}
 
Лучше всего отказаться от окон - это редко, когда удобно для пользователя (если проект серфер-ориентированный).
Попробуйте адаптировать под JQuery или ExtJS.
 
Проверку формы стоит сделать скриптом, и оттуда открывать окно.
Насколько я помню блокировка окон идет по автоматическому открытию окна при загрузке страницы. Если скрипт будет онклик на форме то думаю не будет лочить.
 
А как это сделать правильно?

сейчас у меня в форме идет обработка к php файлу типа
HTML:
<form action="file.php">
........
<input type="submit">
</form>
В файле file.php идет проверка на условия и если true, то
необходимо открыть две ссылки, одну в основном окне,а другую как главную в отдельно открывающемся окне.

делаю онклик onclick=window.open('URL'); не помогает.

как правильно необходимо реализовать с онклик?

Проверку формы стоит сделать скриптом, и оттуда открывать окно.
Насколько я помню блокировка окон идет по автоматическому открытию окна при загрузке страницы. Если скрипт будет онклик на форме то думаю не будет лочить.
 
вот так
<form action="url1" onclick="window.open('url2')"><input type="submit" value="GO"></form>
проверил - работает как надо, ничего не блокирует

ну можно саму функции проверки еще вызвать в онклик и если тру - открывать окно
 
Спасибо за пример, но тут как я понимаю можно задать только определенные два урл, а у меня немного по другому. В форме стоит select и выбор нескольких вариантов и в зависимости от выбранного селекта и еще одного условия (да или нет) в файле обработчике должно выбиратся какие именно срабатывают два или один урл.
вот так
<form action="url1" onclick="window.open('url2')"><input type="submit" value="GO"></form>
проверил - работает как надо, ничего не блокирует
ну можно саму функции проверки еще вызвать в онклик и если тру - открывать окно
 
ну вот, на вскидку самый простой вариант, чтоб ы не городить ничего - это с кнопкой "подтвердить" сделать

т.е. делаешь форму с селектами и тд и тп, как тебе нужно и отправляешь её на обработку скрипту

PHP:
<form action="test.php" method="post")"> <!-- тут любые данные формы --> <input type="submit" value="CHECK"></form>

далее происходит обработка данных и скрипт test.php выводит результатом форму, в которой заданы нужные тебе результаты

т.е. если надо на один - это будет, например

PHP:
<form action="go_to_url1"><input type="submit" value="GO"></form>

либо, если на 2, то

PHP:
<form action="go_to_url1" onclick="window.open('go_to_url2')"><input type="submit" value="GO"></form>

такой вариант вообще замечательный - как надо - так и делаешь :)
 
Да тоже как вариант интересный, надо будет попробовать, но остается загвоздка в блокировке браузером действия по onclick, так как оно вызывается не сразу, а через второе действие. Хотя для обработчтка не должно быть разницы.


ну вот, на вскидку самый простой вариант, чтоб ы не городить ничего - это с кнопкой "подтвердить" сделать
т.е. делаешь форму с селектами и тд и тп, как тебе нужно и отправляешь её на обработку скрипту
PHP:
<form action="test.php" method="post")"> <!-- тут любые данные формы --> <input type="submit" value="CHECK"></form>
далее происходит обработка данных и скрипт test.php выводит результатом форму, в которой заданы нужные тебе результаты
т.е. если надо на один - это будет, например
PHP:
<form action="go_to_url1"><input type="submit" value="GO"></form>
либо, если на 2, то
PHP:
<form action="go_to_url1" onclick="window.open('go_to_url2')"><input type="submit" value="GO"></form>
такой вариант вообще замечательный - как надо - так и делаешь :)
 
остается загвоздка в блокировке браузером действия по onclick

работает как часы, ничего не блокируется
если онклик находится в строке формы, вместе с экшн, то ничего блокировать не будет
 
да работает, но в приведенном твоем примере если его поместить в условие, то при обращении к нему выдается страница с кнопкой и только после нажатия происходит действие, а если делать в обход кнопке, типа сработала, то вызывается только action. Буду искать другие варианты или полностью все без пхп.

работает как часы, ничего не блокируется
если онклик находится в строке формы, вместе с экшн, то ничего блокировать не будет
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху