Por que o evento redimensionar constantemente disparando quando eu atribuí-lo um manipulador com um tempo limite?

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

Pergunta

Eu atribuído um tempo limite para meu manipulador window.resize para que eu não chamaria meu código quantidade de redimensionamento considerável cada vez que o evento é acionado redimensionamento. Meus olhares código como este:

<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...

No IE7 (e possivelmente outras versões), parece que quando você faz este evento o redimensionamento será constantemente fogo. Mais precisamente, ele será acionado depois de cada tempo de espera -. 100 milissegundos, neste caso,

Todas as ideias por que ou como parar este comportamento? Eu realmente prefiro não chamar meu código de redimensionamento para cada evento de redimensionamento que incêndios em um único redimensionamento, mas isso é pior.

Foi útil?

Solução

Em seu // faz código de coisas, você manipular qualquer uma das propriedades de topo, à esquerda, largura, altura, de fronteira, margem ou preenchimento?

Você pode inadvertidamente estar desencadeando recursão que desencadeia involuntariamente recursão que involuntariamente gatilhos recursão ...

Outras dicas

Como corrigir o evento de redimensionamento no IE

Além disso, veja a resposta para "scunliffe" "Em seu ... propriedades?

IE, de fato, constantemente disparar o evento de redimensionamento enquanto redimensionamento está ocorrendo (que você deve saber, como você já estão a implementar um tempo limite para uma correção).

Eu sou capaz de replicar os resultados que você está vendo, usando seu código, na página de teste.

No entanto, o problema desaparece se eu aumentar o tempo limite até 1000 em vez de 100. Você pode querer experimentar com diferentes valores de esperar para ver o que funciona para você.

Aqui está a página de teste eu usei : tem uma dinâmica muito bem período de espera já está configurado para você jogar com.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top