타임 아웃이있는 핸들러를 할당 할 때 크기 조정 이벤트가 지속적으로 발사되는 이유는 무엇입니까?

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

문제

Resize가 발사 될 때마다 상당한 양의 크기 조정 코드를 호출하지 않도록 내 창에 시간 초과를 할당했습니다. 내 코드는 다음과 같습니다.

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

IE7 (및 다른 버전)에서는이 작업을 수행 할 때 크기 조정 이벤트가 지속적으로 발사되는 것으로 보입니다. 보다 정확하게는 시간마다 시간마다 발생합니다.이 경우 100 밀리 초.

이 행동을 막는 이유 또는 방법이 있습니까? 나는 단일 크기 조정으로 발사되는 모든 크기 조정 이벤트에 대해 내 크기 조정 코드를 부르지 않지만 이것은 더 나쁘다.

도움이 되었습니까?

해결책

// 물건 코드에서 상단, 왼쪽, 너비, 높이, 테두리, 여백 또는 패딩 속성을 조작합니까?

의도하지 않은 재귀를 유발하는 재귀를 유발할 수 있습니다.

다른 팁

IE에서 크기 조정 이벤트를 수정하는 방법

또한, 당신의 속성에서 "scunliffe" "에 대한 답을 참조하십시오.

IE는 실제로 크기 조정이 진행되는 동안 크기 조정 이벤트를 지속적으로 발사합니다 (이미 수정을위한 시간 초과를 구현하고 있기 때문에 알아야합니다).

테스트 페이지에서 코드를 사용하여보고있는 결과를 복제 할 수 있습니다.

그러나 타임 아웃을 100 대신 1000으로 늘리면 문제가 사라집니다. 다른 대기 값으로 시도하여 자신에게 맞는 것이 무엇인지 확인하고 싶을 수도 있습니다.

다음은 내가 사용한 테스트 페이지입니다: 그것은 당신이 함께 놀기 위해 이미 설정된 대기 기간이 멋지게 설정되어 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top