我正在纯粹用JavaScript开发一个OAuth身份验证流,我想在弹出窗口中向用户显示“授权访问”窗口,但它被阻止了。
如何防止由window.open
或window.showModalDialog
创建的弹出窗口被不同浏览器的弹出窗口阻止程序阻止?
发布于 2018-06-03 06:02:55
我尝试了多种解决方案,但他的解决方案在所有浏览器中都是唯一有效的
let newTab = window.open(); newTab.location.href = url;
发布于 2020-10-06 11:52:02
我的用例:在我的react应用程序中,当用户点击时,有一个API调用被执行到后端。根据响应,打开新选项卡,并将api响应作为参数添加到新选项卡URL (在同一域中)。
在我的用例中,唯一需要注意的是,接收API响应需要1秒以上的时间。因此,当在新选项卡中打开URL时,弹出窗口阻止程序会显示出来(如果它是活动的)。
为了规避上述问题,下面是示例代码。
var new_tab=window.open()
axios.get('http://backend-api').then(response=>{
const url="http://someurl"+"?response"
new_tab.location.href=url;
}).catch(error=>{
//catch error
})
摘要:创建一个空的选项卡(如第1行),当API调用完成后,您可以用url填充选项卡并跳过弹出窗口阻止程序。
发布于 2021-11-22 15:22:07
@在这里我发现它在所有浏览器中都工作得很好
window.open(URL) || window.location.assign(URL)
https://stackoverflow.com/questions/2587677
复制相似问题