2013-08-06 4 views
0

나는 내가 필요한 것을 얻지 않고 비슷한 질문을 많이 해왔다.JavaScript로 "지연"기능 추가

window.onresize 이벤트가 발생할 때마다 실행되는 코드가 있습니다. 그러나 코드는 어렵고 대개 짧은 시간 내에 많은 .onize 이벤트가 발생하며 솔직히 실행해야하는 코드는 한 번 실행해야합니다.

그래서 내가 원하는 것은 resize 이벤트가 진행되는 동안 잠시 기다리는 코드입니다. 그러면이 이벤트가 한 번 (새 resize 이벤트가 트리거 될 때까지) 실행됩니다.

setInterval과 setTimeout을 모두 사용해 보았습니다. 그러나이 메서드는 지정된 시간을 기다렸다가 정확히 몇 번이나 창 크기가 조정 된 코드를 실행합니다. 창 크기가 조정되었습니다). 같은 코드를 반복해서 반복하면 3-4 초까지 브라우저가 잠기므로 크기를 조정하는 동안 브라우저를 잠그고 코드를 실행하는 것이 더 좋습니다.

실행중인 코드는 화면에 표시된 내용이 속한 곳에서 표시되는지 확인합니다. CSS와 비슷하지만 내부 창 크기와 관련하여 JavaScript로 동적으로 수행되는 스타일링이 많습니다.

Plz, jQuery 솔루션 없음.

내가 충분히 구체적이고 회신 내용을 이해할 수 있기를 바랍니다. 저는 3 개월 동안 프로그래밍 사업에만 종사했으며 실제 교육이 없기 때문에 지금까지 어떤 학교에서 저에게 가르쳐 주 었는지 알 수 있습니다. 그래서 plz 코드를 사용하는 방법을 자세히 설명하십시오.

여기에 약간의 일이 있습니다.

window.onresize = function(){resize()}; 

...

function resize() 
{ 
... 
var CL = document.getElementById("centerleft"); 
CL.style.position = "absolute"; 
CL.style.overflow = "auto"; 
CL.style.top = quaterCONSTANT+"px"; 
CL.style.left = "0px"; 
CL.style.width = CONSTANT+"px"; 
if (getWidth("menu") > CONSTANT) 
    TL.style.width = getWidth("menu")+"px"; 
CL.style.height = h+"px"; 
CL.style.backgroundColor = "#E6E6E6"; 
... 
} 

상수 및 quaterCONSTANT되는 상수 및 getWidth (ID)의 폭되고이 경우에, 나는에 부탁 해요 요소의 폭을 얻을 수있는 기능을 인 센터의 메뉴가 내 웹 페이지의 왼쪽 블록에 있습니다.

이제 크기를 조정할 때마다 계속 진행되고 있습니다. 색상을 똑같이 반복해서 설정하지 않는 것과 같은 것을 꺼내야한다는 것을 알고 있습니다. 그것은 한 번 설정해야하지만, 프로젝트가 진화하면서이 일종의 일이 진행되었습니다. resize 함수를 구현하려는 것은 원래 의도하지 않았습니다.

  • 몰리 당신이 당신의 크기 조정 청취자의 외부 변수를 설정하면된다 다음 거기에 시간 제한을 만들 필요가있는 무엇

답변

1

.

var resizeTimeout = 0; 

window.onresize = function() { 
    // Clear our previously-scheduled resize if any (no-op if it's 0) 
    clearTimeout(resizeTimeout); 

    // Schedule to resize in X milliseconds 
    resizeTimeout = setTimeout(function() { 
     // Clear our timer handle and do the resize 
     resizeTimeout = 0; 
     resize(); 
    }, timeout); // `timeout` is in milliseconds, so for instance, 100 
}; 

은 재 할당이 중지되는 시간 제한 완료하고 기능을 발사합니다 포인트까지 크기를 조정하고 같이 시간 제한을 유지합니다.

+1

모든 크기 조정 이벤트에서 _clear_ 시간 초과가 발생 했습니까? 그렇지 않으면 전혀 도움이되지 않으며, 모든 이벤트는 여전히 발동합니다. –

+0

"저는 3 개월 동안 프로그래밍 사업에만 종사했으며 실제 교육이 없으므로 지금까지 어떤 삶의 학교에서 저를 가르쳐 왔는지 알 수 있습니다. 그래서 코드를 사용하는 방법을 자세히 설명해주십시오." 어떤 종류의 코드를 넣을 지 좀 더 설명해 주시겠습니까? 그리고 저는 여러분이 클리어 타임 아웃 문제에 대해 옳다고 생각합니다. 어떻게 이해할 수 있다면, 이것이 가능할 수 있습니다. 답변 : – Molle

+0

0은 잘못된 타임 아웃 ID이며, 'clearTimeout'에 잘못된 타임 아웃 ID를 전달하는 것이 안전한 곳은 무엇입니까? – 6502

관련 문제