等待使用jQuery加载动态iFrame

时间:2014-01-25 09:43:06

标签: jquery iframe

假设我正在创建一个像这样的动态iFrame:

$('body').prepend('<iframe id="e" src="/page.html"></iframe>');

现在我想等待这个iFrame完成加载,以便我可以访问它的源代码。 我可以这样做:

$('#e').load(function() {}

但是,如果“/page.html”上有图像或任何需要很长时间才能加载的内容,那么我只是等待什么,因为我只需要源代码。

所以我的问题是,是否有可能做这样的事情:

while not exists ($("#e").contents().find('#someid')) { //wait }

所以这只是等到我们的iFrame中存在'#someid'(意味着至少已完成加载的源代码)。

这可能吗?

1 个答案:

答案 0 :(得分:1)

在主窗口中,您可以声明功能(让我们说iframeReady):

function iframeReady() {
    //your code
}

并将以下代码放在iframe中的body标记的末尾:

<script>
parent.window.iframeReady();
</script>

因此,您可以通过parent对象

访问父窗口

因此parent.window.iframeReady将在加载body内容时完全调用,并且不会等到所有图像都加载

警告:它仅在父窗口和iframe具有相同域时才有效