捕获 iframe 加载完成事件

2022-08-30 01:45:49

有没有办法捕获iframe的内容何时从父页面完全加载?


答案 1

<iframe>元素具有相应的加载事件


你如何聆听该事件取决于你,但通常最好的方法是:

1)以编程方式创建您的iframe

它通过在 iframe 开始加载之前附加侦听器来确保始终调用侦听器。load

<script>
var iframe = document.createElement('iframe');
iframe.onload = function() { alert('myframe is loaded'); }; // before setting 'src'
iframe.src = '...'; 
document.body.appendChild(iframe); // add it to wherever you need it in the document
</script>

2)内联javascript,是您可以在HTML标记中使用的另一种方式。

<script>
function onMyFrameLoad() {
  alert('myframe is loaded');
};
</script>

<iframe id="myframe" src="..." onload="onMyFrameLoad(this)"></iframe>

3)您也可以在元素之后,在标记内附加事件侦听器,但请记住,在这种情况下,当您添加侦听器时,iframe可能已经加载了。因此,它可能不会被调用(例如,如果iframe非常非常快,或者来自缓存)。<script>

<iframe id="myframe" src="..."></iframe>

<script>
document.getElementById('myframe').onload = function() {
  alert('myframe is loaded');
};
</script>

另请参阅我的另一个答案,了解哪些元素也可以触发这种类型的加载事件


答案 2

以上答案都不适合我,但是这确实有效

更新

正如下面@doppleganger指出的那样,从jQuery 3.0开始,负载已经消失了,所以这里有一个更新的版本,它使用.请注意,这实际上适用于jQuery 1.7 +,因此即使您还没有使用jQuery 3.0,也可以通过这种方式实现它。on

$('iframe').on('load', function() {
    // do stuff 
});