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

Why sometimes browser block popup and sometimes not?

本文关键字:窗口 浏览器 为什么      更新时间:2023-09-26

如果我在通过 javascript 打开的链接上有一个处理程序,弹出窗口,一切正常。但是,如果在处理程序中,我执行了一个 ajax 请求,然后在完成后打开一个新窗口,浏览器会阻止它。我用:

openedWindow = window.open("/interne/appsocial/aggrega/Aggrega" + pageTitle + ".aspx", "popup", "width=" + popupYTSizeWidth + ", height=" + popupYTSizeHeight + ", top=" + top + ", left=" + left);

你知道为什么吗?我可以解决这个麻烦吗?

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

默认情况下,当前浏览器中的弹出窗口阻止程序倾向于在由明确的用户交互触发时允许弹出窗口,例如单击链接 - 可以假设,这更有可能是用户实际想要打开的弹出窗口,而不是"突然"打开的弹出窗口,这更有可能是烦人/垃圾邮件。

但是,由于您的 AJAX 请求是异步的,因此用户进行的单击与弹出窗口的打开之间没有更多的直接联系 - 这种情况发生在由单击触发的原始代码块完成执行之后很久。因此它被阻止,因为浏览器无法将其与其他类型的"坏"弹出窗口区分开来,这些弹出窗口在没有用户交互的情况下获得开放。