Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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
当使用Window.close()时,使用javascript创建的窗口在卸载之前不启动_Javascript - Fatal编程技术网

当使用Window.close()时,使用javascript创建的窗口在卸载之前不启动

当使用Window.close()时,使用javascript创建的窗口在卸载之前不启动,javascript,Javascript,我有一段javascript代码: var certWin = window.open('/admin/Includes/certCreator.php', '', 'width=200, height=100'); certWin.onbeforeunload = function() { var bodyHtml = $(certWin.document).find('body').html(), json = $.parseJSON(bodyHtml); if ( j

我有一段
javascript代码

var certWin = window.open('/admin/Includes/certCreator.php', '', 'width=200, height=100');

certWin.onbeforeunload = function() {

 var bodyHtml = $(certWin.document).find('body').html(),
     json = $.parseJSON(bodyHtml);

  if ( json['error'] ) {
    appMainStatusBar.setError(json['error']);
  }

}
如果发现任何错误,
certCreator.php
将返回一个
JSON
值,或者如果一切正常,将下载一个zip存档

该代码将打开一个新窗口,并将一直保持到用户关闭它,当然我们不希望这样。如果我确实关闭了窗口,
appMainStatusBar
对象将显示发现的错误

但当我补充这一点时:

echo“window.close();”

转到
certCreator.php
文件。它将关闭窗口,但错误不会显示在
appMainStatusBar
对象上。这就像在卸载之前发生的事件“请勿触发”。

所以我解决了它

问题是我将整个页面作为目标,所以每次触发事件时,都会得到如下结果:

{"error":"Options are not set"} <script type="text/javascript">window.close();</script>

我希望这对其他人有帮助。

比赛条件?如果您改为
setTimeout(window.close,3000)
怎么办?这将为附加
onbeforeunload
事件提供足够的时间。我无法在window.close上执行超时,因为无法知道脚本是否正在运行。。。该脚本创建成员证书,创建所有需要的证书可能需要很长或很短的时间。@Jack Well我添加了超时,但它仍然不起作用。
echo "<div id='results'>";
echo json_encode($returned);
echo "</div>";
echo "<script type='text/javascript'>window.close();</script>";