为什么有时浏览器阻止弹出窗口,有时不会?

时间:2013-11-15 10:24:25

标签: javascript html window

如果我在通过javascript弹出窗口打开的链接上有一个处理程序,那么一切正常。 但是,如果在处理程序内部,我执行ajax请求,并且在完成它之后,我打开一个新窗口,浏览器阻止它。我打开它:

openedWindow = window.open("/interne/appsocial/aggrega/Aggrega" + pageTitle + ".aspx", "popup", "width=" + popupYTSizeWidth + ", height=" + popupYTSizeHeight + ", top=" + top + ", left=" + left);
你知道为什么吗?我可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

  

如果我在通过javascript弹出窗口打开的链接上有一个处理程序,那么一切正常。但是,如果在处理程序内部,我执行ajax请求,并且在完成之后我打开一个新窗口,浏览器阻止它。

默认情况下,当前浏览器中的弹出窗口阻止程序倾向于允许弹出窗口在显式用户交互触发时弹出窗口。点击一个链接 - 可以假设,这更像是一个用户实际想要打开的弹出窗口,而不是一个只能“突然出现”的弹出窗口,这更可能是烦人/垃圾邮件。

但是,由于您的AJAX请求是异步,因此您的用户点击之间不再有直接连接,并且弹出窗口的打开 - 这种情况发生得更晚,在点击触发的原始​​代码块完成执行之后。因此,它被阻止,因为浏览器无法将其与其他类型的“坏”弹出窗口区别开来,这些弹出窗口在没有用户交互的情况下获得开放性。