Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    setTimeout impazzito!? [ie]

    Buongiorno a tutti,
    ho un grosso problema con del codice js che funziona perfettamente su chrome/firefox/safari/opera ma che incasina incredibilmente ie.

    Si tratta di una funzione che dati due div sovrapposti, li sfuma l'uno con l'altro ogni 5 secondi.
    E' semplicemente un modo carino di cambiare l'header di un sito internet.

    Il codice è formato da 2 funzioni:
    codice:
    function rolling_header(wich,image){
      $('#head'+wich).html('[img]'+mypath+'headers/header_0'+image+'.jpg[/img]');
    }
    
    function do_the_rolling(wich,image){
      if (wich==1) other=2;
      else other=1;
      $('#head'+wich).fadeIn('slow');
      $('#head'+other).fadeOut('slow',function(){
        image++;
        if (image>3) image=1;
        setTimeout(function(){ rolling_header(other,image)},5000);
      });
    }
    Ho 3 immgini e 2 div (head1,head2).
    All'inizio head1 è visibile, e contiente l'immagine 1, mentre head2 è invisibile.
    Chiamo rolling_header passando come parametri (2,2) ovvero gli dico di visualizzarmi su head2 l'immagine 2.
    Associato all'evento onload dell'immagine viene chiamata la funzione do_the_rolling alla quale passo i parametri che mi dicono quale deve essere il div da visualizzare e quale quello da nascondere, nonchè quale sarà la prossima immagine da caricare
    Non appena termina il fadeout del div da nascondere lancio di nuovo la rolling_header tramite una settimeout.

    Il problema si verifica solo con ie: praticamente è come se non rispettasse il periodo di 5 secondi ma lanciasse l'evento a casaccio e francamente non riesco a capire il perchè...sembra quasi che l'evento onload dell'immagine venga chiamato più volte di seguito...
    Qualcuno ha qualche idea?

  2. #2
    Fermi tutti! Ho capito

    Il problema era da un'altra parte...
    Il rolling è inizializzato la prima volta all'interno di una funzione che chiamo sull'evento onload del body.
    Sempre sul body, ho la stessa funzione associata all'evento onresize.

    Succede questo: per qualche motivo in ie l'evento onresize sul body viene continuamente lanciato (probabilmente a causa del fadein/out dell'header) e di conseguenza il rolling.
    Ecco perchè sembrava non rispettasse l'intervallo... venivano lanciate infinite istanze della funzione!

    Sono diventato mezzo scemo,ma il problema tanto per cambiare ero io
    Grazie comunque...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.