ya-vitaliy
@ya-vitaliy
Верстаю... + wordpress и пробую Laravel

Почему не работает window.open после получения ответа ajax?

Зравствуйте, подскажите пожалуйста в чем трабл. Если не вдаваться в детали, то есть ajax запрос, который возвращает результат в виде ссылки нужно сделать редирект на эту страницу, и передать ей фокус делаю следующим образом:
var win = window.open(urlPartner, '_blank');
win.focus();

Похожий код вне результата ajax запроса выполняется (окно открывается фокус передается). Но в success jquery возникает ошибка: "Uncaught TypeError: Cannot read property 'focus' of null"
5bd338f5bda6d301204008.png
Подскажите почему так происходит? Вот весь код:
$('.redirect-js-new').on('click', function(e){
        e.preventDefault();
        var idp = $(this).data('idp');
        var urlServer = "http://66.55.159.98";

        $.ajax({
            type: 'POST',
            url: '/wp-admin/admin-ajax.php',
            data: {
                action: 'hash_redirect',
                pid: idp
            },
            success: function (response) {
                if(!response.error){

                    var hesh = response;
                    var urlPartner = urlServer+'/'+hesh;

                    var win = window.open(urlPartner, '_blank');
                    win.focus();

                }else{
                    console.log(response.error);
                }
            },
            error: function () {
                console.log('error ajax');
            }
        });
    });
  • Вопрос задан
  • 1187 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
Это блокировка попапов.

Новое окно можно открыть только синхронно в ответ на явное действие пользователя. Грубо говоря, только в обработчике onclick и синхронных функциях которые она вызывает.

Как вариант, можно сначала открыть пустое окно, а после получения ответа поменять в нём адрес
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы