2013-12-23 2 views
1

Как вызвать функцию с addEventListener после setTimeout? Вот пример кода:addEventListener в зависимости от setTimeout

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

* (→): addEventListener вызывает функцию при загрузке страницы, но он должен вызвать функцию «BlaBla» только после SetTimeout 3 сек. Итак, как это исправить?

+0

Вы вызываете функцию с помощью 'addEventListener', вызывая событие, в которое вы добавили слушателя. Не совсем понятно, чего вы пытаетесь достичь здесь. Пожалуйста, четко укажите, что вы ожидаете. – robertc

+0

Не знаете, что вы пытаетесь сделать здесь. Событие загрузки окна запускается при первом загрузке окна. Зачем вам нужно добавить обработчик для события через 3 секунды? Событие больше не собирается стрелять. – Barmar

ответ

3

, если вы хотите, чтобы вызвать функцию через 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

+0

Если вы хотите, чтобы что-то произошло после того, как наложение затухает, поместите его в функцию обратного вызова fadeIn. Что связано с событием загрузки окна? – Barmar

+0

Но вы хотите, чтобы таймаут начинался после завершения fadeIn, не так ли? Поэтому вызовите 'setTimeout'. – Barmar

+0

нет, он запускает таймаут, когда вы нажимаете 3 с на изображении. Если вы нажмете 3s на изображении, он будет исчезать на оверлее с фиолетовым «ящиком». И когда он исчезает, он должен запустить дешифрующий текстовый эффект. – John

1

Событие «load» уже было запущено даже до того, как обработчик события будет подключен из-за задержки.

Возможно, это поможет.

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

Вы можете использовать jquery для достижения того, что вы требуете. Код приведен ниже. В этом случае функция setTimeOut вызывается, когда страница полностью загружена.

$(function() { 
     setTimeout(function() { 
      blabla(); 
     }, 3000); 
    }); 
Смежные вопросы