【问题标题】:How do I create an indeterminately delayed popup (for Social Auth) with window.open without a popup blocker stopping it如何使用 window.open 创建一个不确定延迟的弹出窗口(用于社交身份验证)而没有弹出窗口阻止程序阻止它
【发布时间】:2012-06-24 22:20:29
【问题描述】:

我想要的体验是:

  1. 用户点击“注册”
  2. 发生了一些异步服务器问题(检查和验证。随便)
  3. 完成所需的异步服务器内容后,会弹出 Facebook/Twitter/任何身份验证对话框。

让这变得困难的几件事:

  1. 社交弹出窗口小部件必须在弹出窗口中。他们不能在里面 的 iframe。
  2. 弹出窗口阻止程序将阻止任何不在单击处理程序的即时函数中的 window.open 代码
  3. window.open 来自标准 ajax 回调处理程序的代码将被弹出窗口阻止程序阻止。
  4. 在 jQuery 1.8 中不推荐使用同步 ajax 请求

有什么想法吗?

【问题讨论】:

    标签: javascript jquery facebook twitter popup


    【解决方案1】:

    这是一个常见的long-lamented problem。尽管 jQuery 可能会弃用同步 AJAX,但您始终可以使用非 jQuery AJAX 请求。另一种可能性是进行以下重构:

    1. 用户点击“注册”
    2. 脚本调用 window.open 到本地 URI
    3. 加载时出现弹出窗口并运行“检查和验证”
    4. 如果出现验证错误,弹出窗口会向父级发送错误并自行关闭
    5. 如果没有,弹出窗口中的本地页面将重定向到 FB/Twitter OAuth 流

    如果可能的话,我建议这样做。如果不是,async: false (或编写您自己的非常简单的跨浏览器 XHR 包装器)仍然是最好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      相关资源
      最近更新 更多