弹出窗口在ajax成功处理程序中被阻止

pro*_*nce 8 javascript jquery popup

我正在尝试打开一个弹出窗口,允许用户通过Twitter进行身份验证,而无需离开他们正在查看的页面.我已经看到这种技术在网络上使用,特别是与Disqus评论应用程序.但是,我只能得到两个结果,或者是"弹出窗口被阻止"的消息,或者甚至没有任何结果.

我尝试过使用此处此处列出的方法.我怎样才能解决这个问题?

我的代码目前看起来像:

var windowSizeArray = [ "width=200,height=200",
                            "width=300,height=400,scrollbars=yes" ];
var url = $('.twitter_popup').attr("href");
var windowName = $('.twitter_popup').attr("name");
var windowSize = windowSizeArray[$('.twitter_popup').attr("rel")];
window.open(url, windowName, windowSize);
Run Code Online (Sandbox Code Playgroud)

Sha*_*oli 20

当代码在脚本执行上下文中执行时,浏览器上的弹出窗口阻止程序会阻止弹出窗口.

例如,如果我们在锚点上打开一个新窗口,单击弹出窗口阻止程序将不会阻止它,但如果我们尝试使用setTimeout打开一个新窗口,您将看到弹出窗口阻止程序将阻止此操作.这是因为当达到超时时,上下文现在是脚本执行上下文而不是用户操作.当我们尝试在ajax回调处理程序中打开一个新窗口时,这是相同的行为.

我想你是这样的情况.

直播例子

如果由于某种原因你想在ajax成功处理程序本身打开弹出窗口,那么你可以通过进行同步ajax调用来实现它.弹出窗口不会被阻止.