我有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
事件不会触发。
答案 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>";
我希望这对其他人有帮助。