gpt4 book ai didi

javascript - iframe 加载事件内的 setTimeout 似乎没有按预期等待 x 秒

转载 作者:行者123 更新时间:2023-11-28 18:42:07 24 4
gpt4 key购买 nike

我想在 iframe 加载后几秒钟后触发 doSomething(),但它却立即触发 doSomething,为什么?

    <html>
<iframe id="myIframe" src="myFrame.html" width=100% height=600></iframe>
<script>
iframe = document.getElementById("myIframe");

function doSomething() {
alert("it should have wait 5000 milliseconds, instead it triggers immediately");
}

if (navigator.userAgent.indexOf("MSIE") > -1 && !window.opera) {
var oldonreadystatechange = iframe.onreadystatechange;
iframe.onreadystatechange = function(){
if (iframe.readyState == "complete"){
if (oldonreadystatechange != null) {
oldonreadystatechange();
setTimeout(doSomething(),5000);
}
}
};
} else {
var oldonload = iframe.onload;
iframe.onload = function(){
if (oldonload != null) {
oldonload();
}
setTimeout(doSomething(),5000);
};
}

</script>
</html>

最佳答案

如果您还想传递参数,一种非常简单的方法是为 setTimeout 创建一个新的匿名函数,如下所示:

setTimeout(function(){ doSomething(123, anotherParam) }, 5000);

这是因为在 JavaScript 中,如果您将函数作为参数传递给另一个函数,如下所示 someFunction(anotherFunction());您正在将该函数的执行结果传递给 someFunction。

您想要做的是将该函数的引用提供给 setTimeout,以便 setTimeout 决定何时运行它。

这样做:

setTimeout(doSomething, 5000);

关于javascript - iframe 加载事件内的 setTimeout 似乎没有按预期等待 x 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35970914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com