2013-09-03 2 views
2

& JavaScript를 사용하여 브라우저 창을 이동하고 싶습니다. resizeTo() 및 moveTo()는 여기 내 친구 인 것 같습니다.브라우저 창을 다시 그리기 전에 모든 JavaScript 코드 실행

window.resizeTo(x,y); 
window.moveTo(x,y); 

이 기능은 작동하지만 시각적으로는 다소 어색합니다. 먼저, 창은 원하는 위치로 이동 한 다음 창이 화면에 다시 그려집니다. 마지막으로 창은 원하는 치수로 크기가 조정되고 다시 한 번 더 화면에 다시 표시됩니다. 이 모든 것은 수백 밀리 초 내에 발생하지만 두 개의 개별 단계가 눈에 띄며 어색해 보입니다.

내가 원했던 것은이 두 메서드가 원자 단위가되어 브라우저 창 (UI 및 모두)이 화면에 다시 그려지기 전에 둘 다 반환된다는 것입니다. JavaScript를 사용하여 윈도우의 위치를 ​​재조정하고 크기를 조정하는이 응집력있는 프리젠 테이션을 얻을 수 있습니까?

+0

는'moveTo' 때문에, 공식적인 [자바 스크립트/브라우저 사양]의 일부 (https://developer.mozilla.org/en-US/docs/Web/API/window.moveTo)하지 아마 권하지 않습니다. 원하는 효과를 다른 방법으로 성취 할 수 있습니까? – Jivings

+0

고마워, 나는 moveTo가 비표준이라는 것을 몰랐다. Firefox의 키에이 코드를 매핑하기 때문에 초점을 맞춘 창의 위치와 크기를 제어 할 수 있습니다. 또 다른 해결책은 일부 쉘 스크립트에서 [wmctrl] (http://tomas.styblo.name/wmctrl/)을 랩핑하고 내 창 관리자를 통해 키로 매핑하는 것입니다. 불행하게도이 경우 키 바인딩은 전역 적이므로 올바른 작업을 수행 할시기를 파악하는 데 약간의 추가 논리가 필요할 것입니다. 또한 다른 응용 프로그램은 매우 동일한 키 바인딩을 잠재적으로 사용할 수 있습니다.이 경우 윈도우 관리자의 바인딩이 우선 적용됩니다. – ntwk

답변

1

setTimeout 트릭을 사용하여 UI에 "캐치 업"을 허용하십시오.

window.setTimeout(function() {window.resizeTo(x,y)},0); 
window.setTimeout(function() {window.moveTo(x,y)},0); 
+0

나는이 해킹에 대해 전혀 알지 못했다. [이전 토론] (http://stackoverflow.com/questions/779379/why-is-settimeoutfn-0-sometimes-useful)은 0을 두 번째 인수로 사용하여 setTimeout을 호출 할 때 예상되는 효과에 대해 설명했습니다. 불행히도,이 특별한 경우에는, 내 문제가 사라지지 않는 것 같습니다. 또한 setTimeout에 대한 단일 호출 내에서 두 윈도우 메서드를 모두 래핑하려고 시도했지만 여전히 기쁨은 없습니다. – ntwk

+1

Windows의 이동 및 크기 조정은 지난 10 년 동안 거의 기능을 수행하지 못했습니다. DOM 응답 성을 높이기 위해 많은 노력이 기울 였지만 실제 윈도우 성능은 뒤쳐졌습니다. –

관련 문제