在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)
响应时,它确实显示了我从axios
请求中获得的网址,但是当我使用openLender()
方法时,它给了我这个错误。
有什么想法吗?
编辑
我在this帖子中使用@IgorDymov他的解决方案来解决此问题
答案 0 :(得分:0)
window.open
方法不是由click
事件直接引起的,则始终被浏览器阻止。关闭弹出窗口阻止功能,它将起作用。
您可以在同一窗口中打开该网址,也可以向用户提供指向新页面的链接。