背景
异步获取待跳转地址 url,使用 window.open(url) 打开该地址,被部分浏览器拦截.
原理
window.open 为用户行为触发时,不会被浏览器拦截,由 js 异步触发时,可能会被浏览器拦截.
解决方案
- 在获取跳转地址前打开一个空白页面
- 获取地址后将该页面重定向到待跳转地址
伪代码:
function openUrl() {
/** 打开一个空页面 */
const newWindow = window.open('about:blank')
/** 获取地址后进行重定向 */
getUrl().then(res => {
newWindow.location.href = res.url
})
}