一尘不染

jQuery .ready在动态插入的iframe中

javascript

当有人点击图片时,我们使用jQuery厚盒来动态显示iframe。在此iframe中,我们使用Galleria一个JavaScript库来显示多张图片。

问题似乎是,$(document).ready在iframe中似乎触发得太早了,并且iframe内容还没有加载,因此Galleria代码未正确应用于DOM元素。$(document).ready似乎使用iframe父就绪状态来确定iframe是否已就绪。

如果我们将准备好的文档调用的函数提取到单独的函数中,并在100毫秒超时后调用它。它可以工作,但是我们不能利用速度较慢的计算机进行生产。

$(document).ready(function() { setTimeout(ApplyGalleria, 100); });

我的问题:当动态iframe就绪且不仅是父级时,我们应该绑定到哪个jQuery事件以执行我们的代码?


阅读 318

收藏
2020-04-25

共1个答案

一尘不染

我回答了类似的问题完成IFRAME加载后,请参阅Javascript回调吗?。您可以使用以下代码来控制iframe加载事件:

function callIframe(url, callback) {
    $(document.body).append('<IFRAME id="myId" ...>');
    $('iframe#myId').attr('src', url);

    $('iframe#myId').load(function() {
        callback(this);
    });
}

在处理iframe时,我发现足以使用加载事件而不是文档就绪事件了。

2020-04-25