2008-11-10 2 views
4

브라우저에서 onresize 이벤트가 끝나는 시점을 감지하려고합니다. "onresize"이벤트를 사용하는 경우 Firefox에서 resize 이벤트가 끝난 후 한 번만 실행되는 것처럼 보입니다. 원하는 이벤트입니다. 그러나 IE에서 시도하면 크기 조정 중에 "onresize"이벤트가 여러 번 발생합니다.html onresizeend 이벤트 또는 resize의 끝을 감지하는 동등한 방법

또한 MSDN에 광고 된 "onresizeend"이벤트를 시도합니다. 그러나 FF 나 IE에서는 전혀 해고되지 않는 것으로 보인다. 다음 코드를 사용합니다 :

<html> 
    <head> 
     <script> 
     <!-- 
     function doLog(message) 
     { 
      document.getElementById("log").innerHTML += "<br/>" + message; 
     } 

     function doResize() 
     { 
      doLog("plain resize"); 
     } 

     function doResizeEnd() 
     { 
      doLog("resize end"); 
     } 
     --> 
     </script> 
     <style> 
     <!-- 
     #log { 
      width: 400px; 
      height: 600px; 
      overflow: auto; 
      border: 1px solid black; 
     } 
     --> 
     </style> 
    </head> 
    <body onresize="doResize();" onresizeend="doResizeEnd();"> 
     <div id="log"/> 
    </body> 
</html> 

이것이 작동하지 않는 이유는 무엇입니까? 어쩌면 "onresizeend"이벤트가 지원되지 않을 수 있습니까? 이 경우 크기 조정 이벤트가 끝났을 때 어떻게 감지 할 수 있습니까?

감사합니다.

답변

5

MSDN onresizeend()에서

내용 만 편집 가능한 객체는 제어 선택에 을 포함 할 수있다. 은 에 의해 콘텐츠 콘텐츠를 편집 할 수있게하려면 contentEditable 속성 을 true로 설정하거나 상위 문서를 디자인 모드로 설정하십시오.

그 이유는 그것이 당신을 위해 발포하지 않는 이유입니다. 나는 당신이 contentEditable을 가능하게하고 싶지 않다고 생각한다. 그래서 타이머를 설정하지 않을까?

var resizeTimer = 0; 
function doResize() 
{ 
    if (resizeTimer) 
     clearTimeout(resizeTimer); 

    resizeTimer = setTimeout(doResizeEnd, 500); 
} 

완벽하지는 않지만 잘하면 좋을 것입니다.

+0

같은 게시물을 올렸습니다 : –

+1

좋은 답변입니다. 'clearTimeout (x)'는 실제로 x의 불리언 값을 변경하지 않으므로, 그것이 지워졌는지 여부에 관계없이 true를 반환합니다. 'clearTimeout'은 에러없이 아무 것도 전달 될 수 없습니다. 그러므로 if (resizeTimer)'가 여기에 중복됩니다. –

관련 문제