>  기사  >  웹 프론트엔드  >  자바스크립트 이벤트 및 마우스 좌표 속성

자바스크립트 이벤트 및 마우스 좌표 속성

一个新手
一个新手원래의
2017-09-09 10:06:201712검색

일반적인 개발에서는 마우스 좌표와 관련된 몇 가지 요구 사항이 다소 발생하게 됩니다. 예를 들어 모바일 측의 제스처 결정, PC 측의 창 흔들기 및 드래그 이벤트 등 그럼 여러분은 Javascript의 Event 이벤트 속성에 대해 모두 알고 계시나요?
예를 들어, 이벤트를 클릭하면 나타나는 현재 좌표는 무엇입니까? 우선, event.pageX, event.clientX 및 event.screenX와 해당 속성의 일부 브라우저 호환성 문제를 이해해야 합니다.

그 전에 이벤트와의 호환성 문제도 이해해야 합니다.
1. 브라우저의 기본 이벤트 동작을 볼 때 가장 먼저 떠오르는 것은 확실히 event.preventDefault()입니다.
2. 이벤트 버블링을 방지하려면 event.stopPropagation()을 사용합니다. 3. 이벤트의 대상 소스 노드를 얻을 때 우리가 생각하는 것은 event.target입니다. 그러나 IE 브라우저, 특히 IE9 이하의 브라우저에서는 위의 사항이 호환성 문제입니다. 여기서는 브라우저 간 이벤트를 수행하기 위해 EventUtil 객체를 요약할 수 있습니다.

    var EventUtil = {
     addHandler: function (elment, type, handler) {
         if (element.addEventListener) {
              element.addEventListener(type, handler, false); 
          } else if (element.attachEvent) {
              element.attachEvent('on' + type, handler) 
          } else {
               element['on' + type] = handler;
          }
     },
     removeHandler: function(element, type, handler) {
         if (element.removeEventListener) {
               element.removeEventListener(type, handler, false);
          } else if (element.detachEvent) {
               element.detacheEvent('on' + type, handler); 
          } else {
              element['on' + type] = null; 
          }
     },
     getEvent: function(event) {
         return event ? event : window.event; 
     },
     getTarget: function(event) {
         return event.target || event.srcElement; 
     },
     preventDefault: function(event) {
         if (event.preventDefault) {
              event.preventDefault(); 
          } else {
              event.returnValue = false; 
          }
     },
     stopPropagation: function(event) {
         if (event.stopPropagation) {
              event.stopPropagation(); 
          } else {
              event.cancelBubble = false; 
          }
     },
};

위의 크로스 브라우저에서 핸들러 이벤트가 처리된 후 여기에는 제목과 관련된 내용이 언급되지 않았습니다. 먼저, 위에서 언급한 세 개의 pageX, clientX, screenX 사이의 관계를 먼저 이해해야 합니다.

 1、pageX:是指鼠标的位置相当于web页面的具体坐标;
 2、clientX:是指鼠标的位置相对于浏览器窗口的具体坐标;
 3、screenX:则具体是指鼠标位置相对于系统窗口的具体坐标;

 其中,pageX可能会大于或等于clientX;可以用这个公式来计算:  
     pageX = clientX + (document.body.scrollLeft || document.documentElement.scrollLeft);
 具体的差别可自行脑补出来啦,哈哈。


위 내용은 자바스크립트 이벤트 및 마우스 좌표 속성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.