在子窗口打开并完成加载时收到通知

时间:2013-11-30 17:07:59

标签: javascript ajax window.open

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

我正在做的是显示ajax通知程序.gif因为这个window.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附加到当前窗口,但是如果我尝试将iframe附加到我正在打开的新窗口,则无效。

1 个答案:

答案 0 :(得分:0)

这就是你可以做到的。

<强> 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;
}