페이지의 요소 좌표를 가져 오려고합니다.인라인 offsetparent를 사용하여 요소의 왼쪽/위쪽을 실제 가져 오기
var el = element, pos = {x: 0, y: 0};
while (el) {
pos.x += el.offsetLeft;
pos.y += el.offsetTop;
el = el.offsetParent;
}
을하지만 문제의 요소가 display: block
을 가지고 있으며, offsetParents 중 하나가 display: inline;
이있는 경우이 방법이 실패 : 나는 그것을 얻기 위해 표준 방법을 사용하고있다. 이 this thread에 설명 된 사실에 기인한다 : jQuery를 함께하려고 몇 후
올바른 반환 -method 자신의 .offset()
오프셋 밝혀, 나는 소스를 보였지만 정확히 어떻게 찾을 수없는 것 그들은 그것을한다. 그래서 제 질문은 : 정확한 위치를 얻으려면 어떻게해야합니까? 이 프로젝트에서는 jQuery를 사용할 수 없으며 the thread described earlier의 메서드는 성가신 일이며 요소를 추가하고 테스트가 너무 많은 작업 (성능 관점)이며 Element.getBoundingClientRect
을 사용하는 것은 사용할 수 없습니다.
당신이 다음에 선택과 유형의 디버거를 열 Apple.com에 갈 수 그것을 밖으로 시도 기분이 경우이 코드
var el, el2;
el = el2 = document.querySelector('#worldwide span');
var pos = {x: 0, y: 0};
while (el2) {
pos.x += el2.offsetLeft;
pos.y += el2.offsetTop;
el2 = el2.offsetParent;
}
alert("Calculated position: " + pos.x + "x" + pos.y + " window size: " + screen.width + "x" + screen.height);
내가 얻을 :. Calculated position: 1354x988 window size: 1280x800
(즉, 왼쪽의 방법입니다 오프셋 화면이 명확하지 않음)
어떻게 가능합니까? 해결 방법은 없습니까? 근사값? 그것은 정확해야 할 필요는 없지만 이전보다 더 좋아야합니다. 감사.
편집 : 이것은 WebKit 렌더링 엔진을위한 것입니다.