Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firefox在元素已加载后执行onload_Javascript_Firefox - Fatal编程技术网

Javascript Firefox在元素已加载后执行onload

Javascript Firefox在元素已加载后执行onload,javascript,firefox,Javascript,Firefox,我有一个iframe(我知道是坏的),在document ready上设置了加载事件: <script> $(function(){ var executeLoad = false; $("#ExampleFrame").on("load", function(){ if(executeLoad){ doSomething(); } }); executeLoad = true; }); <

我有一个iframe(我知道是坏的),在document ready上设置了加载事件:

<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>

$(函数(){
var executeLoad=false;
$(“#ExampleFrame”)。在(“加载”,函数()上{
if(executeLoad){
doSomething();
}
});
executeLoad=true;
});
我注意到,
doSomething()
在页面加载后立即被执行,因此我添加了
executeLoad
检查,该检查仍然不起作用。我还尝试将脚本块放入
表单
标记下方的主体中,它仍在执行中。这只发生在Firefox中。是否有任何方法可以忽略
#ExampleFrame
的初始加载事件?我本以为将加载事件绑定到document ready上可以防止这种情况发生。

网页加载(和onload事件被触发),即使异步调用、承诺、图像加载、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>

$(函数(){
$(“#ExampleFrame”).1(“加载”,函数(){
$(此)。在(“加载”,剂量测量);
});
});

希望有帮助。

准备好的文档不能保证像iframe这样的外部资源被完全加载,它只是一个处理程序,当所有元素都存在时,
标记已经输出等。图像、帧、脚本和其他东西仍然可以加载。如果要忽略第一个iframe加载事件,您可能可以执行以下操作->您可以检查加载处理程序中的
this.contentWindow.location
,并根据该数据确定要执行的操作。Firefox一开始会触发“about:blank”的加载处理程序,因为iframe确实加载到了您的页面上,尽管内容是空白的。@adeneo这实际上阻止了初始执行吗?jQuery文档建议它将执行“加载”触发器的第一个实例,然后再也不会触发。现在您有了一个事件处理程序,它可以在每次加载iFrame时创建一个新的事件处理程序,创建许多事件处理程序并发出。@adeneo Yes。同意。但是,对于他的问题,我觉得这是一个可行的解决方案。如果有一种方法可以让iframe稍后加载来解决问题,那么就不要更改流。正如adeneo所说,页面会让加载速度变慢。到处都是事件处理程序!那会把事情搞砸的。第一个调用应该是
.one
,而不是
。on
是。在csum进行了更改