我正在尝试打开一个弹出窗口,以允许用户通过 Twitter 进行身份验证,而无需离开他们正在查看的页面。我在网络上看到过这种技术,尤其是 Disqus 评论应用程序。但是,我只能得到两个结果,要么是“弹出窗口被阻止”消息,要么什么都没有发生。
我已经尝试使用概述的方法 here和 here .我该如何解决这个问题?
我的代码目前看起来像:
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);
最佳答案
当代码在脚本执行上下文中执行时,浏览器上的弹出窗口阻止程序会阻止弹出窗口。
例如,如果我们在 anchor 上打开一个新窗口,则弹出窗口阻止程序不会阻止它,但如果我们尝试使用 setTimeout 打开一个新窗口,您会看到弹出窗口阻止程序会阻止它。这是因为当达到超时时,上下文现在是脚本执行上下文,而不是用户操作。这与我们尝试在 ajax 回调处理程序中打开一个新窗口时的行为相同。
我想你也遇到过类似的情况。
直播 example
如果由于某种原因你想在 ajax 成功处理程序本身中打开弹出窗口,那么你可以通过进行同步 ajax 调用来实现它。弹出窗口不会被阻止。
关于javascript - 弹出窗口在 ajax 成功处理程序中被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7059902/