2011-03-09 6 views
6

document.elementFromPoint(500,1000)here은 문서가로드 될 때 해당 픽셀이 보이는 문서 외부에있는 경우 왜 null을 반환합니까?왜 보이는 문서 외부의 요소에 대해 document.elementFromPoint가 null을 반환합니까?

눈에 띄는 점은 처음에는 보이는 문서 바깥뿐만 아니라보기로 스크롤 한 후에는 null을 반환한다는 것입니다. (페이지 높이 미만 1,000 픽셀로 축소되어 있는지 확인)

(- -> 스크립트> '표현 시청'을 Ctrl 키를 교대 - 내가)

이를 테스트하는 간단한 방법은 크롬에 편집 :은 그래서 docs

  1. 항상 가시 영역 이외의 점에 null을 반환에 따라, 이해가 않습니다
  2. x와 y가 표시 화면의 왼쪽 상단과 오른쪽을 기준으로합니다

나는

답변

2

그것은 당신이 창 밖으로 점을 지정할 때 어떤 요소가 반환한다는 의미가 모두 가정에 실패했습니다. 그 시점에서 볼 수있는 요소를 반환하며, 윈도우의 크기가 다른 경우 표시 될 요소는 반환하지 않습니다. 창의 크기를 변경하면 요소가 이동 될 수 있으므로 해당 지점에 표시 될 수있는 요소가 반환되면 일관된 응답을 얻지 못할 수도 있습니다.

창에서 내용을 스크롤하는 방법에 관계없이 창 외부의 점이 여전히 창 외부에 있습니다.

+0

그 점에 스크롤 할 때 왜 널 (null)을 반환 않습니다

document.elementFromPoint(X - window.pageXOffset, Y - window.pageYOffset); 

을 또는 당신이 이벤트를 수신하는 경우가 될 것이라고 :

다음 코드는 날 위해 일 보이는 렌더링? – Joel

+0

Mozilla docs에 따르면 외부 가시 영역 일 때 null을 반환해야합니다. 아직 볼 때 스크롤 할 때 여전히 null을 반환하는 이유가 없습니다. https://developer.mozilla.org/en/DOM/document.elementFromPoint – Joel

38

그래서 당신 자신의 질문에 답했습니다. document.elementFromPoint는 문서가 아닌 뷰포트 좌표에서 작동합니다. 스크롤 보상을 추가하면됩니다. 그래서

document.elementFromPoint(e.pageX - window.pageXOffset, e.pageY - window.pageYOffset); 
+5

내가이 +100을 upvote 할 수만 있다면. 고마워. –

+0

Google에서이 사실을 발견했습니다. 이것은 내가 무엇을 찾고 있었는지 정확히 알 수 있습니다! 고마워요. D –

+0

Anton 감사합니다! 당신은 오늘을 구했습니다 :) – chriscrossweb

관련 문제