JavaScript_Basic 지식을 기반으로 마우스 클릭 위치 좌표를 구하는 방법

WBOY
풀어 주다: 2016-05-16 17:37:23
원래의
1158명이 탐색했습니다.

일부 DOM 작업에서는 요소의 위치를 ​​다루는 경우가 많습니다. 마우스 상호작용은 자주 사용되는 측면입니다. 실망스러운 점은 브라우저마다 결과가 다르며 결과적으로 이 기사에서는 그렇지 않을 수도 있다는 것입니다. 마우스 클릭 위치 좌표 획득에 대한 몇 가지 간단한 요약 코드가 IE8, FireFox 및 Chrome에서 테스트되고 호환된다는 특별한 설명은 없습니다

마우스 클릭 위치 좌표

화면 기준

위치를 결정하기 위해 마우스 클릭이 포함된 경우 상대적으로 간단합니다. 마우스 클릭 이벤트를 얻은 후 screenX 및 screenY 이벤트는 화면의 왼쪽 및 위쪽 여백을 기준으로 클릭 위치를 얻습니다. 다양한 브라우저 성능은 상당히 일관됩니다.

코드 복사 코드는 다음과 같습니다.

function getMousePos(event) {
var e = event || window.event;
브라우저 창을 기준으로 {'x':e.screenX,'y':screenY}
}

반환

간단한 코드를 구현할 수 있지만 이것만으로는 충분하지 않습니다. 왜냐하면 대부분의 경우 브라우저 창을 기준으로 마우스 클릭 위치의 좌표를 얻고 싶기 때문입니다. 이벤트의 clientX 및 clientY 속성은 각각 마우스 클릭 위치가 문서의 왼쪽 여백과 위쪽 여백을 기준으로 함을 나타냅니다. 마찬가지로 우리는 다음과 같은 코드를 작성했습니다.
코드 복사 코드는 다음과 같습니다.

function getMousePos (이벤트) {
      var e = event || window.event;
                return {'x':e.client 🎜>상대 문서


있습니다 간단한 테스트에는 문제가 없지만 clientX와 clientY는 페이지 스크롤 요소를 무시하고 현재 화면을 기준으로 좌표를 얻습니다. 이는 여러 조건에서 매우 어렵습니다. 그러나 페이지 스크롤, 즉 기준 좌표를 고려해야 하는 경우는 어떻습니까? 문서(본문 요소)? 스크롤 변위를 추가하기만 하면 됩니다. 다음으로 페이지의 스크롤 변위를 계산해 보겠습니다.
사실 Firefox에서는 pageX 및 pageY 속성을 지원하므로 문제는 훨씬 더 간단합니다. 이 두 속성은 이미 페이지 스크롤을 고려합니다.
Chrome에서는 document.body.scrollLeft 및 document.body.scrollTop을 통해 페이지 스크롤 변위를 계산할 수 있고 IE에서는 document.documentElement.scrollLeft 및 document.documentElement.scrollTop을 사용할 수 있습니다


코드 복사
코드는 다음과 같습니다.function getMousePos(event) { var e = event || window.event; var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
var x = e. pageX || e.clientX scrollX;
var y = e.pageY || e.clientY scrollY;
//alert('x: ' x 'ny: ' y);
return { 'x ': x, 'y': y };
}



관련 라벨:
js
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!