【发布时间】:2017-12-30 03:51:58
【问题描述】:
我有一个站点和该站点中的 iFrame,以及许多其他内容(图像等)。
现在我使用 jQuery 的 $(document).ready(function() { ... }); 来执行代码。在该代码中,我试图操纵 iFrame 中的内容。但是,我必须确保加载 iFrame 以执行代码。
iFrame 通常在代码执行的同时加载,因此有时会失败,有时不会。
如果我使用$('#iframe').load(function(){ });,事件并不总是被执行,因为在那一刻我附加了那个加载监听器,iFrame 可能已经完成加载,加载事件不会再次被执行。如果我离开它,元素有时还不存在(代码执行得太早)。
所以我想要实现的是这样的:
if iFrame is already loaded
-- execute code
else
-- $('#iframe').load(function() { /*execute code*/ });
有没有更好的方法可以在不使用脏超时的情况下实现这一点?或者如果使用这种方法,是否有一个函数可以检查元素是否已经加载?
【问题讨论】:
-
更改为
.on('load')- .load() 和 .on('load') 做不同的事情 -
@ThisGuyHasTwoThumbs .load() 上的文档说“此方法是 .on( "load", handler ) 的快捷方式” - 它仍未在已加载的元素上执行
-
@FlorianMüller true 但是 - .load() 将加载 url 资源,可用于导入脚本并将数据加载到 div,.on('load') 可用于在元素的加载
-
@Shiladitya 感谢您的提示,但我想这与 Roamer-1888 回答的方法相同 - 在加载后设置 iFrame 的 src 元素,这会延长加载性能时间,