当子窗口打开并完成加载时得到通知

Get notified when child window is open and finished loading

本文关键字:加载 通知 窗口      更新时间:2024-01-21

当子窗口打开时,检查其内容是否全部从服务器接收并完全加载的方法是什么?

我正在做的是显示一个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;
}