Pourquoi l'événement resize constamment mise à feu quand je lui attribuer un gestionnaire avec un délai d'attente?

StackOverflow https://stackoverflow.com/questions/1262774

Question

J'affecté un délai d'attente à mon gestionnaire de window.resize pour que je ne qualifierais pas ma quantité considérable redimensionne code chaque fois que l'événement se déclenche de changement de taille. Mon code ressemble à ceci:

<script>
function init() {
  var hasTimedOut = false;
  var resizeHandler = function() {
    // do stuff
    return false;
  };

  window.onresize = function() {
    if (hasTimedOut !== false) {
      clearTimeout(hasTimedOut);
    }
    hasTimedOut = setTimeout(resizeHandler, 100); // 100 milliseconds
  };
}
</script>
<body onload="init();">
...
etc...

Dans IE7 (et éventuellement d'autres versions), il semble que lorsque vous faites cela l'événement resize sera constamment le feu. Plus précisément, il se déclenche après chaque durée du délai d'attente -. 100 millisecondes dans ce cas

Toutes les idées pourquoi ou comment arrêter ce comportement? Je préfèrerais ne pas appeler mon code de modification de taille pour chaque événement resize que les incendies dans un seul Redimensionnement, mais ce qui est pire.

Était-ce utile?

La solution

Dans votre // ne code choses, ne vous manipuler l'un des haut, à gauche, la largeur, la hauteur, la frontière, la marge ou les propriétés padding?

Vous pouvez sans le vouloir être déclenchez récursion qui déclenche involontairement récursion qui déclenche involontairement récursion ...

Autres conseils

Comment fixer l'événement resize dans IE

aussi, voir la réponse pour "scunliffe" « Dans vos ... propriétés?

IE ne fait toujours feu son événement de redimensionnement lors du redimensionnement a lieu (que vous devez savoir, comme vous mettent déjà en place un délai d'attente d'une solution).

Je suis en mesure de reproduire les résultats que vous voyez, en utilisant votre code, sur ma page de test.

Cependant, le problème disparaît si j'augmente le délai d'attente à 1000 au lieu de 100. Vous pouvez essayer avec différentes valeurs d'attente pour voir ce qui fonctionne pour vous.

Voici la page de test je : il a une dynamique bien attendre la période déjà mis en place pour vous de jouer avec.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top