За последние 24 часа нас посетили 18738 программистов и 1650 роботов. Сейчас ищет 1741 программист ...

по клику открыть 2 окна

Тема в разделе "JavaScript и AJAX", создана пользователем vikrorpert, 14 фев 2017.

  1. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    есть ссылка
    HTML:
    1. <a class="urlop" href="https://s.com/ target="_blank"></a>
    мне нужно при клике на нее открыть новую вкладку плюс еще другую вкладку
    это обработчик клика
    Код (Javascript):
    1. $.get('url', function(data) {
    2.         if (data != '') {
    3.             window.open(data);
    4.         }
    5.     });
    никак не получается открыть 2 окна,открывается только 1 окно
    как сделать?
     
    #1 vikrorpert, 14 фев 2017
    Последнее редактирование модератором: 14 фев 2017
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а как клик навешивается?
     
  3. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    $(document).on(click)
    клик отрабатывает,но открывается только 1 окно
    вот полный код с попытками
    Код (Text):
    1. $(document).on('click', 'a.urlop', function() {
    2.     //window.open($(this).attr('href'), '_blank');
    3.     var url = '';
    4.     $.ajax({
    5.         url: 'url',
    6.         //async: false,
    7.         success: function(data) {
    8.             setTimeout(function() {
    9.                 if (data != '') {
    10.                     console.log(data);
    11.                     window.open(data, 'w2');
    12.                 }
    13.             }, 1000, data);
    14.         }
    15.     });
    16.  
    17.     //if (url != '') {
    18.     //    console.log(url);
    19.     //    window.open(url, 'w2');
    20.     //}
    21.     //$.get('url', function(data) {
    22.     //    if (data != '') {
    23.     //        console.log(data);
    24.     //        window.open(data);
    25.     //    }
    26.     //});
    27.     //console.log($(this).href);
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Потому что отрабатывает стандартный обработчик клика, который открывает окно ибо в таргете записан бланк? В этом обработчике на 99% окно не должно открываться. Будет создан запрос ко вряд ли существующему ресурсу и сервер вряд ли вернет нормальный статус по которому выполнится саксес-колбэк.
     
  5. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    есть решение чтобы открыть 2 окна?
    одно окно по href а другое скриптом
    --- Добавлено ---
    гугление показало что это не тривиальная задача
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @vikrorpert ты хочешь открыть окно если ajax запрос удался? Не очень понятно что значит два окна. Можно разные target прописать.
     
  7. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    да общий смысл такой
    но счас смотрю что второе окно не открывается даже если явно вызвать window.open в обработчике клика
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @vikrorpert так разные target указал? и зачем открывать два окна, кому это нужно и в какой задаче?
     
  9. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    указывал _blank и случайное имя, все равно открывает 1 окно
    а насчет кому нужно-заказчику нужно, кому же еще?
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Конечно есть. Хоть десять. Хоть сто. У ссылки есть стандартный обработчик клика - переходитель браузером на новую локацию. Джаваскриптом можно навесить любое неразумное кол-во обработчиков клика. Собственно, у тебя уже всё что нужно - есть. Внешний обработчик клика делает кривой запрос, не получает данных, не выполняет свой саксес и не открывает окно. Зато стандартный обработчик в тот же момент спокойно открывает "таргет: _бланк" с локацией указанной в ссылке.
     
  11. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    мой обработчик нормально срабатывает console.log(data); отрабатывается
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Тут примерчик подъехал...

    ajax.php - вернет ссылку, которую нужно показать в окне
    PHP:
    1. <?php echo 'win.php?r=', rand(0, 100000);
    win.php - открывается в новом окне и показывает значение аргумента r
    PHP:
    1. <!DOCTYPE html>
    2. <html>
    3.     <head>
    4.         <title>ru.php.forum.62144 :: Win</title>
    5.     </head>
    6.     <body>
    7.         <?= filter_input(INPUT_GET, 'r', FILTER_SANITIZE_NUMBER_INT) ?>
    8.     </body>
    9. </html>
    index.php - покажет три числа при клике на которые будет открыто соответствующее кол-во окон.
    PHP:
    1. <!DOCTYPE html>
    2.  
    3. <html>
    4.     <head>
    5.         <title>ru.php.forum.62144</title>
    6.         <script
    7.             src="https://code.jquery.com/jquery-2.2.4.min.js"
    8.             integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
    9.             crossorigin="anonymous">
    10.         </script>
    11.     </head>
    12.     <body>
    13.         i
    14.         <a href="#1" class="url" id="i1">1</a>
    15.         <a href="#2" class="url" id="i2">2</a>
    16.         <a href="#3" class="url" id="i3">3</a>
    17.  
    18.         <script type="text/javascript">
    19.             $('a.url').on('click', function ()
    20.             {
    21.                 var l = Number.parseInt(this.innerHTML);
    22.  
    23.                 for (var i = 0; i < l; i++)
    24.                 {
    25.                     var wid = this.id + '-' + i;
    26.                     (function (wid)
    27.                     {
    28.                         $.ajax({
    29.                             url: 'ajax.php',
    30.                             success: function (data)
    31.                             {
    32.                                 setTimeout(function () {
    33.                                     if (data !== '') {
    34.                                         console.log(data, wid);
    35.  
    36.                                         window.open(data, wid);
    37.                                     }
    38.                                 }, 1000);
    39.                             }
    40.                         });
    41.                     })(wid);
    42.                 }
    43.             });
    44.         </script>
    45.     </body>
    46. </html>
     
    denis01 и vikrorpert нравится это.
  13. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    нашел проблему-не заметил что хром блокировал всплывающие окна
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @vikrorpert ещё бывает расширения всякие могут мешать
     
    #14 denis01, 14 фев 2017
    Последнее редактирование: 14 фев 2017
  15. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    из этого надо сделать вывод, что поскольку у конечного пользователя может и не возникнуть желания разрешать попапы - вероятно задача требует иной реализации
     
    denis01 нравится это.
  16. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    а без скриптов никак не сделать что бы при клике открывались 2 ссылки?
     
  17. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Никак. Это уже основы вэба в целом и понятия ссылки в частности. Ссылка указывает на уникальный ресурс. Несколько ссылок могут ссылаться на один ресурс. Одна ссылка не может ссылаться на несколько ресурсов (с поправкой на окружение).
     
  18. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    сделал открытие вкладок через клик по ссылкам через document.getElementById('url').click()
    первая вкладка всегда открывается,дальше всплывает блокировщик
     
  19. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Давай с другой стороны всё же зайдем. Что ты пытаешься сделать? Зачем такое неадекватное кол-во всплывающих окон?
     
  20. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    я пытаюсь реализовать хотелку заказчика
    задача-при клике по ссылке, или не важно куда кликать,можно по кнопке, нужно открыть 2 разных вкладки с разными ссылками
    чтобы у юзера открылись 2 разные вкладки
     
  21. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    А чем обоснована эта хотелка?
     
  22. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    хочет подсовывать реф ссылку
     
  23. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    И для этого нужно обязательно открывать пятак окон? Фреймы рассматривали?
     
  24. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    а фрейм зачем?
    есть сайт,юзер кликает на ссылку,ему открываем эту ссылку плюс открываем свою реф ссылку=2 вкладки открываются