Firefox已在元素加载后执行onload

时间:2015-12-03 18:57:18

标签: javascript firefox

我有一个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的初始加载事件吗?我原以为将文件准备好的装载事件绑定就可以防止这种情况发生。

1 个答案:

答案 0 :(得分:0)

网页加载(并触发onload事件),即使其他元素如异步调用,承诺,图像加载,iframe加载仍在进行中。这意味着,即使某些Div和元素仍未加载,HTML文档仍会加载。

所以,基本上如果你想要整个网页&amp; 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>

希望它有所帮助。