addEventListener取决于setTimeout

时间:2013-12-23 18:17:14

标签: javascript settimeout addeventlistener

如何在setTimeout之后用addEventListener调用函数?以下是代码中的示例:

xyz = setTimeout(function () {
    [...blabla function...]
    // *(↓)
    if (window.addEventListener) {
        window.addEventListener('load', blabla, false);
    } else {
        window.attachEvent('onload', blabla);
    }
}, 3000);

*(→):addEventListener在页面加载时调用该函数,但是只有在setTimeout为3s后才能调用“blabla”函数。那么,如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

如果要在加载窗口3秒后调用函数,则应将setTimeout调用放入处理程序中:

function delayed_blah() {
    setTimeout(blabla, 3000);
}

if (window.addEventListener) {
    window.addEventListener('load', delayed_blah, false);
} else {
    window.attachEvent('onload', delayed_blah);

对于您的应用程序,您要做的是从动画回调中调用decrypt()函数:

$('#dlbox').animate({
    'top': '0'
}, 1000, decrypt);

DEMO

答案 1 :(得分:1)

由于延迟,“load”事件在附加事件处理程序之前就已经被触发了。

可能会有所帮助。

function blahblah(){
}
window.addEventListener("DOMContentLoaded",function(){
      setTimeout(blahblah,3000);
});

答案 2 :(得分:0)

您可以使用jquery来满足您的要求。代码如下。 在此,当页面完全加载时,将调用setTimeOut函数。

 $(function () {
        setTimeout(function () {
            blabla();
        }, 3000);
    });