javascript(jquery)에서 resize이벤트를 걸게되면, 창이 resize되는동안 함수가 계속 동작하게 된다.
결과적으로 화면을 갱신하기 위해서 cpu도 계속 동작하기 때문에 브라우저에 과부하를 줄 수 있다.
이를 해결하기 위해서는 resize 완료시에만 이벤트를 걸고 싶은 마음이 생긴다.
다른 개발자들의 코드도 보았지만 아래의 형태가 가장 간단해서 소개하고자 한다.
var delta = 300; var timer = null; $( window ).on( 'resize', function( ) { clearTimeout( timer ); timer = setTimeout( resizeDone, delta ); } ); function resizeDone( ) { // ...do } // or window.addEventListener( 'resize', function( ) { clearTimeout( timer ); timer = setTimeout( resizeDone, delta ); }, false );
간단히 설명하자만, resize 이벤트가 발행하면 이벤트 함수는
이전에 실행하려고 하였던 resizeDone 함수 실행을 취소한 후 다시 재등록한다.
계속 resize 중이면 동일하게 취소, 등록을 반복하다가
resize가 끝나면 마지막으로 등록한 이벤트 함수를 한번만 실해하게 된다.
짦으면서도 효과적인 소스인 것 같다.
'# 웹 개발 > 프레임워크' 카테고리의 다른 글
OpenLDAP을 활용한 기반시스템 중앙 인증관리 #1 (0) | 2017.05.31 |
---|---|
IntelliJ에서 Spring+maven 프로젝트 import 및 설정 (http버전) (0) | 2017.05.31 |
java debugging시 source not found가 나올 경우 해결책 (0) | 2017.03.03 |
서버 재시작 없이 java컴파일 하기 (0) | 2016.08.08 |
mybatis insert/update 에서 null값이 들어갈때 처리방법 (0) | 2016.08.06 |