【发布时间】:2011-02-04 23:19:21
【问题描述】:
我正在开发一个纯 JavaScript 的 OAuth 身份验证流程,我想在弹出窗口中向用户显示“授予访问权限”窗口,但它被阻止了。
如何防止window.open 或window.showModalDialog 创建的弹出窗口被不同浏览器的弹出窗口阻止程序阻止?
【问题讨论】:
-
即使有可能(我不知道),如果人们使用弹出窗口拦截器,你应该尊重它。大多数浏览器在站点尝试打开弹出窗口时会显示一条消息,因此如果他们愿意,他们仍然可以看到它。您可以在您的网站上备注某些内容会在弹出窗口中打开,并且用户应该允许它才能继续。
-
最佳实践如下:1) 成功地做到这一点 2) 关上你的窗户,关上你的门,害怕聚集在一起的不安的网络顾客 3) 忏悔,移除弹出- up-busta-busta,并尊重您的观众。
-
Alex 和 Felix,我已经更新了问题。我不会将知识用于邪恶:)。谢谢!
-
我想补充一点,绕过弹出窗口拦截器实际上可能是为了让用户体验更好。在我现在正在处理的一个示例中,我们正在使用一个 Javascript 应用程序(基于 ExtJS)并且我们试图让用户使用贝宝付款。我们为他们提供了一个按钮,他们可以单击以在新窗口中启动 paypal,但某些版本的 IE 将其阻止为弹出窗口(即使它是单击按钮)。如果他们现在启用弹出窗口,屏幕重新加载并且作为 JavaScript 应用程序,我们将失去窗口状态,他们必须重新开始。真的:问题是 IE 很笨。
-
@FelixKling 是的,这是可能的。浏览器制造商已经考虑到这一点。只要有用户意图(由用户单击链接或按钮发出信号),就可以打开弹出窗口。弹出窗口拦截器应尊重用户意图。如果 IE 的弹出窗口阻止程序没有,则错误是弹出窗口阻止程序。用户使用弹出窗口阻止程序来阻止脚本随意打开弹出窗口,而不是阻止他们自己尝试打开的弹出窗口(通过单击按钮或链接)。
标签: javascript popup modal-dialog popup-blocker