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

    [javascript] problema con setTimeout

    salve a tutti!
    Avrei un problema con il browser internet explorer 8. Ho creato nel mio sito web una funzione javascript che dovrebbe ingrandire una fotografia del 50% in un tempo di circa un secondo. Con ie9, google chrome, safari, firefox il risultato è perfetto. Ma con ie8 la funzione va molto lenta, praticamente a scatti e non riesco a capire perchè. La funzione aumenta la dimensione della foto ogni 20 ms attraverso il setTimeout javascript.
    Posto il codice:

    codice:
    var i=0;
    
    function ingrandimento(){
    foto=document.getElementById('foto');
    altezzadasommare=foto.height/100;
    larghezzadasommare=foto.width/100;
    
    if (i<50){
    i=i+1;
    foto.height=foto.height+altezzadasommare;
    foto.width=foto.width+larghezzadasommare;
    setTimeout("ingrandimento()", 20);
    }
    else{
    
    }
    }
    Sapete dirmi come mai va a scatti in ie8? Grazie mille a tutti.

  2. #2
    Ho notato che effettivamente il problema non si presenta quando si ingrandisce una immagine, ma la lentezza in ie8 si ha solo quando decido di sfocare una immagine in un dato periodo di tempo, tipo effetto dissolvenza di una immagine. Creando una funzione analoga in ie9 e gli altri browser va veloce ma in ie8,7 ecc... va lentuccio... posto un codice di esempio:


    codice:
    <SCRIPT LANGUAGE='JAVASCRIPT'>
    
    
    var i=100;
    
    function trasparenza(){
    if (i>0){
    i=i-1;
    document.getElementById('foto').style.filter="alpha (opacity="+i+")";
    setTimeout("ingrandimento()", 20);
    }
    else{
    
    }
    }
    </SCRIPT>
    Se sapete dirmi come mai... Grazie mille!

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Io se fossi in te per questo tipo di animazioni,transizioni,dissolvenze passerei ad jquery più tosto che capire il motivo.
    guida
    risorse
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    51
    su ie non dovresti dare un timeout inferiore a 50, fai una prova

    dovresti anche evitare di usare variabili globali se hai intenzione di mettere più script nella stessa pagina

    per quanto riguarda la trasparenza meglio se usi jquery perchè cambia da browser a browser

  5. #5
    http://www.sitepoint.com/forums/show...highlight=fade

    prima di passare ad altro le cosine imho è meglio impararle a farle
    a manina

    invece di setTimeOut usa setInterval

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  6. #6
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da whisher
    prima di passare ad altro le cosine imho è meglio impararle a farle
    a manina
    Originariamente inviato da whisher
    invece di setTimeOut usa setInterval
    Quoto tutto

  7. #7
    proverò con il setInterval. Grazie mille.

  8. #8
    ho provato con il setInterval ma il risultato è analogo purtroppo... non c'è differenza

  9. #9
    Originariamente inviato da yujin
    su ie non dovresti dare un timeout inferiore a 50, fai una prova

    dovresti anche evitare di usare variabili globali se hai intenzione di mettere più script nella stessa pagina

    per quanto riguarda la trasparenza meglio se usi jquery perchè cambia da browser a browser
    In effetti è proprio quello il problema grazie mille! ie9 riesce ad andare anche al di sotto di 50ms mentre ie8 se metto 10ms mi calcola sempre 50ms e quindi l'animazione della dissolvenza me la rende molto + lenta! Grazie infinite!

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.