捕获 iframe 加载完成事件
2022-08-30 01:45:49
有没有办法捕获iframe的内容何时从父页面完全加载?
<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>
另请参阅我的另一个答案,了解哪些元素也可以触发这种类型的加载
事件
以上答案都不适合我,但是这确实有效
更新:
正如下面@doppleganger指出的那样,从jQuery 3.0开始,负载已经消失了,所以这里有一个更新的版本,它使用.请注意,这实际上适用于jQuery 1.7 +,因此即使您还没有使用jQuery 3.0,也可以通过这种方式实现它。on
$('iframe').on('load', function() {
// do stuff
});