2010-07-13 3 views
0

J'essaie de gérer des éléments sur mon site lorsque la fenêtre est redimensionnée et que j'ai rencontré un problème avec Chrome que je n'arrive pas à résoudre. Voici le code, très simplifié:Problème d'événement de redimensionnement de fenêtre pour Chrome

<script language="javascript" type="text/javascript"> 
    window.onresize = function() 
     { 
      alert(1); 
      alert(2); 
      alert(3); 
      alert(4); 
     }; 
    }); 
</script> 

Lorsque je clique pour restaurer la fenêtre (faire est plus petit), il fonctionne très bien (exécution deux fois pour une raison quelconque). En maximisant la fenêtre, les alertes vont dans cet ordre: 1, 2, 1, 2, 3, 4, 3, 4; ou parfois 1, 1, 2, 3, 4, 2, 3, 4. Dans IE, il semble fonctionner correctement (s'exécutant trois fois) et FF est bien (ne s'exécutant qu'une fois). J'ai aussi essayé ceci avec l'équivalent jQuery de $ (window) .resize (...); avec le même résultat. Je sais que javascript n'est pas multi-thread, mais il semble presque que c'est dans cette situation. Quelqu'un a-t-il une idée?

Répondre

3

Ce n'est pas tellement simple vs multi-thread, un appel alert() est l'une des rares choses qui bloque le fil d'exécution, si en une alerte est en place, d'autres choses se bousculent en arrière-plan.

Si vous n'avez pas utilisé des alertes et au lieu d'un fait console.log() ou écrit dans la page de votre mise au point, vous aurez beaucoup un comportement plus cohérent qu'avec les appels alert() ... qui sont vraiment mauvais pour juger ou filetage conditions de course, puisqu'elles interfèrent directement et les modifient.

Questions connexes