Firefox在元素已加载后执行onload



我有一个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>

希望能有所帮助。

最新更新