有没有办法捕获iframe的内容何时从父页面完全加载?
元素有一个load
事件.你如何倾听这一事件取决于你,但通常最好的方法是:
1)以编程方式创建iframe
它确保load
始终通过在iframe开始加载之前附加它来调用您的侦听器.
2)内联javascript,是你可以在HTML标记中使用的另一种方式.
3)您还可以在元素内部的标记内附加事件监听器,但请记住,在这种情况下,在添加监听器时,iframe的可能性很小.因此,它可能不会被调用(例如,如果iframe非常快,或来自缓存).
另请参阅我的其他答案,了解哪些元素也可以触发此类load
事件
上述答案都不适合我,但是这样做了
更新:
正如@doppleganger在下面指出的那样,从jQuery 3.0开始,加载就消失了,所以这里是一个使用的更新版本on
.请注意,这实际上可以在jQuery 1.7+上运行,因此即使你还没有使用jQuery 3.0,你也可以通过这种方式实现它.
$('iframe').on('load', function() { // do stuff });
香草JavaScript中还有另一种一致的方式(仅适用于IE9 +):
const iframe = document.getElementById('iframe'); const handleLoad = () => console.log('loaded'); iframe.addEventListener('load', handleLoad, true)
而且,如果您对Observables感兴趣,那么就可以做到:
return Observable.fromEventPattern( handler => iframe.addEventListener('load', handler, true), handler => iframe.removeEventListener('load', handler) );