使用window.close()时,使用javascript创建的窗口不会触发onb​​eforeunload

时间:2015-03-13 21:07:14

标签: javascript

我有javascript code这段

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 "<script type='text/javascript'>window.close();</script>"

certCreator.php文件。它将关闭窗口,但错误不会显示在appMainStatusBar对象上。这就像onbeforeunload事件不会触发。

1 个答案:

答案 0 :(得分:0)

所以我解决了。!

问题是我的目标是整个页面,所以每次事件被解雇时都会出现这样的情况:

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

它存储在bodyHtml var as string中,然后我尝试将其解析为JSON,当然这不会解析。这不是要解析的有效字符串。

我将var bodyHtml更改为var resultsHtml = $(certWin.document).find('#results').html();

certCreator.php页面中,我更改为:

echo "<div id='results'>";
echo json_encode($returned);
echo "</div>";
echo "<script type='text/javascript'>window.close();</script>";

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

相关问题