Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用户批准阻止弹出窗口打开时的窗口事件?_Javascript_Jquery_Html_Safari_Popup Blocker - Fatal编程技术网

Javascript 用户批准阻止弹出窗口打开时的窗口事件?

Javascript 用户批准阻止弹出窗口打开时的窗口事件?,javascript,jquery,html,safari,popup-blocker,Javascript,Jquery,Html,Safari,Popup Blocker,有许多类似的问题,比如访问被阻止的弹出窗口,但没有一个适合这些情况 用户流: 用户点击按钮 单击按钮触发异步服务器调用。当服务器调用返回(>1-2秒)时,JavaScript代码打开新窗口(使用相同的域) 如其他问题所述,大多数浏览器都会阻止这个新窗口 我们目前的解决方法是每3秒钟进行一次轮询,查看窗口是否打开。这种方法的问题是代码会打开多个窗口,即使我们只需要一个窗口 从新打开的窗口中使用window.opener似乎不可靠,因为一些答案表明window.opener在FireFox和Saf

有许多类似的问题,比如访问被阻止的弹出窗口,但没有一个适合这些情况

用户流:

  • 用户点击按钮

  • 单击按钮触发异步服务器调用。当服务器调用返回(>1-2秒)时,JavaScript代码打开新窗口(使用相同的域)

  • 如其他问题所述,大多数浏览器都会阻止这个新窗口

  • 我们目前的解决方法是每3秒钟进行一次轮询,查看窗口是否打开。这种方法的问题是代码会打开多个窗口,即使我们只需要一个窗口

  • 从新打开的窗口中使用
    window.opener
    似乎不可靠,因为一些答案表明
    window.opener在FireFox和Safari中无法始终访问

因此有一个问题:当一个被阻止的弹出窗口最终打开时,是否有一个我们可以订阅的窗口事件被调用

最终,目标是在新窗口打开并准备就绪后立即在其中调用代码

var DownloadWindow = window.open("newURL", "uniqueWindowID");

*** 1-2 seconds later ***

startTest();

function startTest() {
   // <DownloadWindow> doesn't exist yet? Set timeout and check back later.
   var delayDur = 3000;
   if (!DownloadWindow) {
      DownloadWindow = openDownloadWindow();
      setTimeout(startTest, delayDur);
      return;
   }

   // Do stuff.
}
var DownloadWindow=window.open(“newURL”、“uniqueWindowID”);
***1-2秒后***
startTest();
函数startTest(){
//还不存在?设置超时,稍后再检查。
var delayDur=3000;
如果(!下载窗口){
DownloadWindow=openDownloadWindow();
设置超时(开始测试、延迟测试);
返回;
}
//做事。
}