2009-04-30 8 views
0

iFrame 내에 존재할 수있는 페이지의 HTML 요소에 대한 절대 x, y 좌표를 얻는 방법은 무엇입니까? 이 페이지는 때때로 독자적으로 호출되며 때로는 iFrame 내에서 호출됩니다.iFrame 내의 html 요소의 정확한 좌표

이것은 offsetLeft와 offsetTop 및 offseParent를 기반으로 x, y 위치를 계산하기 위해 작성한 함수입니다.

function getXY(obj) 
{ 
var curObj = obj; 
var curLeft = curTop = 0; 

curLeft += curObj.offsetLeft 
curTop += curObj.offsetTop; 

while (curObj.offsetParent != null) 
{ 
    curObj = curObj.offsetParent;    
    curLeft += curObj.offsetLeft 
    curTop += curObj.offsetTop; 
} 
obj.x = curLeft; 
obj.y = curTop; 
} 

페이지 상단이지만, 문제는 페이지는 iframe이 내부에서 실행되는 경우 나는 페이지의 iframe이의 오프셋을 모르는 경우이가 잘 작동합니다.

페이지가 iFrame에 있는지 여부에 관계없이 정확한 절대 좌표를 얻을 수있는 방법이 있습니까?

감사합니다.

답변

0

에 대한 http://docs.dojocampus.org/dojo/coords를 참조하십시오. 부모 iframe을 얻으려면 window.parent를 찾아야합니다. 그런 다음 부모를 통해 재귀 적으로 오프셋을 얻을 수 있습니다.

if (window.parent && window.parent.frames && window.parent.document && window.parent.document.getElementsByTagName) { 
    var iframes = window.parent.document.getElementsByTagName("IFRAME"); 
    for (var i = 0; i < iframes.length; i++) { 
     var id = iframes[i].id || iframes[i].name || i; 
     if (window.parent.frames[id] == window) { 
      //iframes[i] is your iframe in your parent. 
     } 
    } 
} 

내가 jQueryUI 내 FrameDialog 플러그인에서 프레임을 식별하기위한이 기술을 사용하고 있습니다.

+0

고마워,이게 내가 찾고 있었던거야. 현재 창 밖으로 나가기를 생각하지 않았지만 window.parent를 사용하고 iframe에 대한 참조를 얻는 것이 필요합니다. 감사! –

1

나는이를 위해 JQuery Dimensions을 사용합니다. DOM을 걷고 모든 오프셋을 추가하는 것은 좋은 일입니다.

+0

감사합니다.이 정보가 유용합니다. 자세한 내용을 살펴 보겠습니다. –

0

Dojo 또는 JQuery와 같은 JavaScript 프레임 워크를 사용해보십시오. 그들은이 모든 기본 기능을 가지고 있으며 최신 브라우저에서 일관되게 작동합니다. 도장에서

는 :

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js"></script> 
// box is an oject {l, t, w, h, x, y} 
// (x,y) are the absolute coordinates 
// (l,t) are the left and top offsets relative to the parent container 
box = dojo.coords(aDomObj); 

내가 그런 당신을 위해 작동하는 경우 JQuery와 차원이 제안 제안, 잘 자세한 내용

관련 문제