'4.2'에 해당되는 글 1건

  1. 2014.07.15 안드로이드 4.2에서 발견된 버그

#환경

일단 발견된 버그의 환경은 안드로이드 4.2 갤럭시 노트2에 기본 브라우저다.


#코드

var i = 0; var id = setInterval(function(){ if(i > -200){ document.getElementById('log').innerText = i; // document.getElementById("parent").style.webkitTransform = "translate3d("+i+"px,0,0)"; document.getElementById("parent").style.left = i+"px"; }else{ clearInterval(id); } i = i - 10; },16.8);

그냥 간단하게 엘리먼트를 주기적으로 옮기는 코드


#기대

16.8ms마다  -10px씩 이동하고 -200px이 되면 멈추야 한다.


#결과

매번 코드는 동작하지만 약 1000ms에 한번씩 이동함.


#원인

정확한 원인은 확인 안됨. 버전마다 차이는 있지만, 기기마다 차이가 있는지는 확인이 안됨. 참고로, 코드는 동작하지만 돔이 reflow가 발생되면 paint되지 않음. repaint의 경우는 정상적임. 타이머에 의해 돔이 주기적으로 reflow되면 매번 paint하지 않고 약 1000ms마다 paint됨. 아마도 내부적으로 타이머에서 돔이 reflow된 경우 적당하게 paint(약1000ms) 되는것 같음. 사용자 이벤트로 빠르게 변경하는건 상관없음. 재미있는건 translate는 잘됨. color같은 repaint작업은 상관 없음.


#회피방법

다각도로 테스트 해봤지만, left로 이동하면서 해결하는 방법은 없고 주석처럼 translate나 translate3d로 이동하면 해결가능.



Posted by 전용우
,