VueJS и axios: нельзя использовать url в ответе axios, чтобы открыть в новом окне - PullRequest
0 голосов
/ 24 августа 2018

У меня есть два следующих метода в компоненте vuejs:

    openLender: function(setUrl) {
        const win = window.open(setUrl, '_blank');
        win.focus();
    },
    getLender: function(setEnt, setEx, setRev, setCred, setDur, checkWishes, lender) {
        const vm = this;
        const request = 'lender_click';
        const setWishes = vm.arrayToString(checkWishes);
        axios({
            method:'get',
            url:'/api',
            params: {
                request: request,
                setent: setEnt,
                setex: setEx,
                setrev: setRev,
                setcred: setCred,
                setdur: setDur,
                setwishes: setWishes,
                setlender: lender
            },
            responseType:'json'
        })
        .then(function(response) {
            const url = response.data;
            vm.openLender(url[0].response);
        })
        .catch(function(error) {
            alert(error);
        });
    }

Проблема в том, что я получаю эту ошибку:

TypeError: Cannot read property 'focus' of null

Когда я console.log(url[0].response) получаю ответ, он показывает мне URL, полученный из запроса axios, но когда я использую метод openLender(), он выдает мне эту ошибку.

Есть мысли?

EDIT

Я использовал @IgorDymov его решение в этом посте, чтобы обойти эту проблему

1 Ответ

0 голосов
/ 24 августа 2018
Метод

window.open всегда блокируется браузером, если он не вызван непосредственно событием click. Отключите блокировку всплывающих окон, и она будет работать.

Вы можете открыть ссылку в том же окне или предоставить пользователю ссылку на новую страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...