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

Тема в разделе "Другие языки", создана пользователем Abuza, 14 фев 2010.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Abuza

    Abuza

    Регистр.:
    7 май 2007
    Сообщения:
    177
    Симпатии:
    5
    Подскажите пожалуйста как обойти блокировку всплывающего окна при его вызове.
    Есть форма с которой вызывается php файл, в файле идет проверка условия да/нет и если нет, то необходимо чтоб сработал вызов двух окон, одно открывается вместо страницы с формой, а другое в новом окне, которое почему то блокируется.
    Подскажите плз, почему блокируется окно по нижеприведенному примеру и если возможно пути обхода.
    Спасибо.
    PHP:
    if (no) {
    echo 
    "
     <script language='JavaScript'>
     new_window=window.open('URL'); 
     new_window.focus(); 
     window.location = 'URL';
     </script>"
    ;
    }
     
  2. gadfly

    gadfly Создатель

    Регистр.:
    30 авг 2007
    Сообщения:
    13
    Симпатии:
    0
    Лучше всего отказаться от окон - это редко, когда удобно для пользователя (если проект серфер-ориентированный).
    Попробуйте адаптировать под JQuery или ExtJS.
     
  3. Mendel

    Mendel

    Регистр.:
    27 янв 2008
    Сообщения:
    217
    Симпатии:
    64
    Проверку формы стоит сделать скриптом, и оттуда открывать окно.
    Насколько я помню блокировка окон идет по автоматическому открытию окна при загрузке страницы. Если скрипт будет онклик на форме то думаю не будет лочить.
     
  4. Abuza

    Abuza

    Регистр.:
    7 май 2007
    Сообщения:
    177
    Симпатии:
    5
    А как это сделать правильно?

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

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

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

     
  5. betatest

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    вот так
    <form action="url1" onclick="window.open('url2')"><input type="submit" value="GO"></form>
    проверил - работает как надо, ничего не блокирует

    ну можно саму функции проверки еще вызвать в онклик и если тру - открывать окно
     
  6. Abuza

    Abuza

    Регистр.:
    7 май 2007
    Сообщения:
    177
    Симпатии:
    5
    Спасибо за пример, но тут как я понимаю можно задать только определенные два урл, а у меня немного по другому. В форме стоит select и выбор нескольких вариантов и в зависимости от выбранного селекта и еще одного условия (да или нет) в файле обработчике должно выбиратся какие именно срабатывают два или один урл.
     
  7. betatest

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    ну вот, на вскидку самый простой вариант, чтоб ы не городить ничего - это с кнопкой "подтвердить" сделать

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

    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>
    такой вариант вообще замечательный - как надо - так и делаешь :)
     
  8. Abuza

    Abuza

    Регистр.:
    7 май 2007
    Сообщения:
    177
    Симпатии:
    5
    Да тоже как вариант интересный, надо будет попробовать, но остается загвоздка в блокировке браузером действия по onclick, так как оно вызывается не сразу, а через второе действие. Хотя для обработчтка не должно быть разницы.


     
  9. betatest

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    работает как часы, ничего не блокируется
    если онклик находится в строке формы, вместе с экшн, то ничего блокировать не будет
     
  10. Abuza

    Abuza

    Регистр.:
    7 май 2007
    Сообщения:
    177
    Симпатии:
    5
    да работает, но в приведенном твоем примере если его поместить в условие, то при обращении к нему выдается страница с кнопкой и только после нажатия происходит действие, а если делать в обход кнопке, типа сработала, то вызывается только action. Буду искать другие варианты или полностью все без пхп.

     
Статус темы:
Закрыта.