>웹 프론트엔드 >JS 튜토리얼 >일반적으로 사용되는 기본 JS 호환성 작성 방법_javascript 기술 요약

일반적으로 사용되는 기본 JS 호환성 작성 방법_javascript 기술 요약

WBOY
WBOY원래의
2016-05-16 15:03:331938검색

간단한 내용을 정리해 보겠습니다

비고: 다음 메소드는 모두 EventUtil 객체에 래핑되어 있으며 메소드는 객체 리터럴을 사용하여 직접 정의됩니다. . .

①이벤트 방식 추가

addHandler:function(element,type,handler){
 if(element.addEventListener){//检测是否为DOM2级方法
  element.addEventListener(type, handler, false);
 }else if (element.attachEvent){//检测是否为IE级方法
  element.attachEvent("on" + type, handler);
 } else {//检测是否为DOM0级方法
  element["on" + type] = handler;
 }
}

②이전에 추가한 이벤트 메소드 삭제

removeHandler:function(element, type, handler){
  if (element.removeEventListener){
   element.removeEventListener(type, handler, false);
  } else if (element.detachEvent){
   element.detachEvent("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 = true;
  }
 }

⑥mouseover 및 mouseout 이벤트에는 관련 요소를 가져오는 메서드만 포함됩니다

//mouseover和mouseout 事件才包含的获取相关元素的方法
getRelatedTarget: function(event){
 if (event.relatedTarget){
  return event.relatedTarget;
 } else if (event.toElement){
  return event.toElement;
 } else if (event.fromElement){
  return event.fromElement;
 } else {
  return null;
 }
}

⑦마우스 휠 판단

mousedown 및 mouseup 이벤트의 경우 이벤트 객체에 버튼 속성이 있습니다.
누르거나 놓은 버튼을 나타냅니다. DOM 버튼 속성은 다음 세 가지 값을 가질 수 있습니다. 0은 기본 마우스 버튼을 나타내고 1은 가운데 마우스를 나타냅니다.
버튼(마우스 휠 버튼), 2는 보조 마우스 버튼을 나타냅니다. 일반 설정에서 기본 마우스 버튼은 마우스 왼쪽 버튼이고, 보조 마우스 버튼은
입니다. 버튼은 마우스 오른쪽 버튼입니다.
IE8 및 이전 버전도 버튼 속성을 제공하지만 이 속성의 값은 DOM의 버튼 속성과 매우 다릅니다.
 0: 버튼이 눌려지지 않았음을 나타냅니다.
 1: 기본 마우스 버튼이 눌려졌음을 나타냅니다.
 2: 마우스 버튼이 눌려졌음을 나타냅니다.
 3: 기본 마우스 버튼과 보조 마우스 버튼이 동시에 눌려졌음을 나타냅니다.
 4: 마우스 가운데 버튼이 눌려졌음을 나타냅니다.
 5: 마우스 메인 버튼과 마우스 가운데 버튼이 동시에 눌려져 있음을 나타냅니다.
 6: 두 번째 마우스 버튼과 마우스 가운데 버튼이 동시에 눌려졌음을 나타냅니다.
 7: 세 개의 마우스 버튼이 동시에 눌려졌음을 나타냅니다.

getButton: function(event){
 if (document.implementation.hasFeature("MouseEvents", "2.0")){
  return event.button;
 } else {
  switch(event.button){
   case 0:
   case 1:
   case 3:
   case 5:
   case 7:
   return 0;
   case 2:
   case 6:
   return 2;
   case 4:
   return 1;
  }
 }
}

⑧마우스 휠 증분값(델타) 구하는 방법

getWheelDelta: function(event){
 if (event.wheelDelta){
  return (client.engine.opera && client.engine.opera < 9.5 &#63;
   -event.wheelDelta : event.wheelDelta);
 } else {
  return -event.detail * 40;//firefox中的值为+3表示向上滚,-3表示向下滚
 }
}

⑨크로스 브라우저 방식으로 문자 인코딩 가져오기

getCharCode: function(event){
 if (typeof event.charCode == "number"){
  return event.charCode;
 } else {
  return event.keyCode;
 }
}

⑩ 클립보드의 데이터에 접근

getClipboardText: function(event){
  var clipboardData = (event.clipboardData || window.clipboardData);
  return clipboardData.getData("text");
 }

11. 클립보드에 데이터를 설정합니다

setClipboardText: function(event, value){
  if (event.clipboardData){
   return event.clipboardData.setData("text/plain", value);
  } else if (window.clipboardData){
   return window.clipboardData.setData("text", value);
  }
 }

캡슐화한 후 바로 사용하세요.

전체 파일과 더 기본적인 CSS 및 LESS 재설정 스타일을 보려면 https://github.com/LuckyWinty/resetFile

을 참조하세요.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

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