当子窗口打开时,检查其内容是否全部从服务器接收并完全加载的方法是什么?
我正在做的是显示一个ajax通知程序.gif,因为这个窗口.open大约需要15秒,我需要给用户一些东西来查看。
这是我尝试过的一种方法,但ajax加载程序通知程序在窗口打开后立即关闭,这是意料之中的事,但我这样做是为了举例。
AlumCloud.showAjaxLoader();
if (window.open(['/api/rollup?f=', getResponseFormatOpt(), '&ids=', options.ids.join(','), '&lbls=', options.addLbls].join(''), '_blank',
'width=' + WIN_OPEN_WIDTH + ',height=' + WIN_OPEN_HEIGHT, false)) {
AlumCloud.removeAjaxLoader();
};
当窗口打开并完全加载了它的内容时,如果有一个回调,那就太好了。
但是,如果有另一个间隔,我可以设置一个间隔来检查窗口是否加载。
这是一个让我非常接近但不起作用的东西。
var url = ['/api/rollup?f=', getResponseFormatOpt(), '&ids=', options.ids.join(','), '&lbls=', options.addLbls].join('');
$.ajax({
url: url,
cache: true,
complete: function (jqXHR, textStatus) {
var w = window.open("", '_blank', 'width=' + WIN_OPEN_WIDTH + ',height=' + WIN_OPEN_HEIGHT, false);
w.document.body.appendChild($('<iframe src="' + url + '" width="100%" height="100%" >').get(0));
}
});
如果我将该iframe附加到当前窗口,它会起作用,但如果我试图将该ifame附加到我打开的新窗口,它就不起作用
这就是你可以做到的。
JS
$.ajax({
url: "YourajaxcallURL",
data: "DataIfany",
beforeSend: function () {
// this is where we append a loading image
$('#ajax-panel').html('<div class="loading"><img src="loading.gif" alt="Loading..." /></div>');
},
success: function (data) {
$('#ajax-panel').empty();
},
error: function (data) {
$('#ajax-panel').empty();
}
});
并将其添加到HTML:中
<div id="ajax-panel"> </div>
CSS:
#ajax-panel {
position: absolute;
}