如何避免浏览器弹出窗口拦截器?


async payWithPaypal(context, id) {
context.commit("set_busy", { data: true }, { root: true });
var response = await ApiService.PAY_WITH_PAYPAL(id);
if (response.code == 200 && response.data.success) {
var invoice = response.data.invoice;
AlertUtil.SHOW_SUCCESS_ALERT("Erledigt!");
context.commit("updateInvoice", invoice);
window.open(response.data.redirectUri, "_blank");
} else {
AlertUtil.SHOW_SUCCESS_ALERT(response.data.message);
}
context.commit("set_busy", { data: false }, { root: true });
},

如上所示,我希望在响应成功时打开新窗口。但是浏览器的弹出窗口阻止程序不允许打开新窗口。我该怎么修理它?

由于异步操作,浏览器会出于安全原因阻止它。模拟表单提交可以解决这类问题。

const openWindow = (url) => {
let form = document.createElement('form');
form.action = url;
form.target = '_blank';
form.method = 'GET';
document.body.appendChild(form);
form.submit();
// clear
document.body.removeChild(form);
form = null;
}
openWindow('https://www.example.com');

最新更新