0

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

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

你知道为什么吗?我可以解决这个问题吗?

4

1 回答 1

3

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

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

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

于 2013-11-15T10:31:08.927 回答