0

我想要的体验是:

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

使这变得困难的几件事:

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

有任何想法吗?

4

1 回答 1

2

这是一个普遍而令人遗憾的问题。尽管 jQuery 可能会弃用同步 AJAX,但您始终可以使用非 jQuery AJAX 请求。另一种可能性是重构,其中发生以下情况:

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

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

于 2012-06-24T22:56:24.323 回答