我有一个iframe(我知道很糟糕),在文档就绪时设置了一个加载事件:
<script>
$(function(){
var executeLoad = false;
$("#ExampleFrame").on("load", function(){
if(executeLoad){
doSomething();
}
});
executeLoad = true;
});
</script>
<iframe id="ExampleFrame" name="example"></iframe>
<form id="Example Form" method="post" action="http://externalurl" target="example">
</form>
我注意到页面一加载就执行doSomething()
,所以我添加了executeLoad
检查,但仍然没有起作用。我还尝试将脚本块放在form
标记下方的主体中,它仍在执行中。这只发生在Firefox中。有什么方法可以忽略#ExampleFrame
的初始加载事件吗?我本以为在documentready上绑定加载事件可以防止这种情况发生。
网页加载(并触发onload事件),即使其他元素(如异步调用、promise、图像加载、iframe加载)仍在进行中。这意味着,即使某些Div和元素还没有加载,HTML文档也会加载。
所以,基本上,如果你想要整个网页&iframe要完全加载,请使用类似的东西-
<script>
$(function(){
$("#ExampleFrame").one("load", function(){
$(this).on("load", doSomething);
});
});
</script>
<iframe id="ExampleFrame" name="example"></iframe>
<form id="Example Form" method="post" action="http://externalurl" target="example">
</form>
希望能有所帮助。