我正在开发一个纯 JavaScript 的 OAuth 身份验证流程,我想在弹出窗口中向用户显示“授予访问权限”窗口,但它被阻止了。
如何防止由 window.open
或 window.showModalDialog
创建的弹出窗口被不同浏览器的弹出窗口阻止程序阻止?
最佳答案
一般规则是,如果 window.open
或类似内容是从 直接用户操作 未调用的 javascript 调用的,则会使用弹出窗口阻止程序。也就是说,您可以调用 window.open
来响应按钮单击而不会被弹出窗口阻止程序击中,但是如果您将相同的代码放入计时器事件中,它将被阻止。调用链的深度也是一个因素 - 一些较旧的浏览器只查看直接调用者,较新的浏览器可以回溯一点以查看调用者的调用者是否是鼠标点击等。保持尽可能浅以避免弹出窗口阻止程序。
关于javascript - 避免浏览器弹出窗口拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2587677/