2010-12-01 11 views
2

document.elementFromPoint를 사용하여 선택한 요소를 드래그하여 가져옵니다. 하지만 null을 반환합니다. 같은 코드를 실행하고 동일한 코드를 다시 실행하면 객체가 반환됩니다.document.elementFromPoint가 IE에서 null을 반환합니다.

function GetZoneFromPoint(x, y, prtDrag, elemIBeam,evnt) { 
    if (x == null || y == null || prtDrag == null || elemIBeam == null) 
     alert("Null in GetZone"); 
    var prtDragZIndexOld = prtDrag.style.zIndex; 
    var elemIBeamZIndexOld = elemIBeam.style.zIndex; 
    prtDrag.style.zIndex = -1; 
    elemIBeam.style.zIndex = -1; 
    var zone; 
    zone = document.elementFromPoint(x, y); 
    prtDrag.style.zIndex = prtDragZIndexOld; 
    elemIBeam.style.zIndex = elemIBeamZIndexOld; 
    if (zone == null) { 
     zone = document.elementFromPoint(x, y); 
     if (zone == null) { 
      debugger; 
      zone = event.rangeParent; 
     } 
    } 
    if (zone == null) { 
     alert('null'); 
     return null; 
    } 
    if (x < 0 || x > document.body.clientWidth || 
     y < 0 || y > document.body.clientHeight) { 
     zone = null; 
    } 
    else if ((zone.className == 'LayoutWellElement') || 
      (zone.className == 'LayoutMainElement') || 
      (zone.className == 'ElementFrame')) { 
     while ((!FIsZone(zone)) && (zone.tagName != 'BODY')) { 
      zone = zone.parentElement; 
     } 
    } 
    if (!FIsZone(zone)) { 
     zone = null; 
    } 
    return zone; 
} 

답변

0

우리가 같은 불쾌한 생각을 가지고있는 것처럼 하하, 봐입니다 :

다음

는 코드입니다. 하지만 개체 충돌을 조사 중입니다. GetZoneFromPoint를 어디에서 호출할까요? 브라우저에서 호출 된 커서 클릭 이벤트, 맞습니까? 따라서 x 또는 y를 확인할 필요가 없습니다. 처음에는 zone = null입니다. elementFromPoint를 두 번 확인해보십시오. x &은 변경되지 않았습니다. 여기서 일을 끝냈습니다.

몇 가지 팁 : - B는 B라는 오른쪽 'B'에 A & B라는 2 개의 '절대'DIV 객체가 있습니다. - 다음과 같이 사용 : var X = parseInt (B.offsetLeft); var Y = parseInt (B.offsetTop); alert (document.elementFromPoint (X, Y) .innerHTML); - 왜 구문 분석합니까? offsetLeft 형식으로 반환합니다 : 숫자 + "px" - 결과는 다음과 같습니다. IE-> A 반환 FF-> B - X-1 또는 Y-1이면 두 브라우저 모두 A를 반환합니다. - 최종 단어 : 사용하지 마십시오 document.body.clientWidth만으로 해상도를 확인하십시오.이 document.body.clientWidth-o.clientWidth를 시도하십시오. 희망을 당신에게 보너스 전원을 제공합니다. 격려!

관련 문제