DOM Level 0 이벤트 핸들러 및 DOM2 레벨 이벤트 핸들러를 이벤트 핸들러를 이벤트 핸들러로 캡슐화하여 크로스 브라우저 효과를 달성합니다. 코드는 다음과 같습니다.
var eventUtil = {// addeventhandler : 함수 (요소, 유형, 핸들러) {if (element.addeventListener) {element.addeventListener (type, handler, false);} else if (요소 .attachevent) {exember.attachevent ( "+type, handler);} {elect [on+type" removeeventhandler : function (element, type, handler) {if (element.removeeventListener) {element.removeEventListener (type, handler, false);} else if (element.detachevent) {element.detachevent ( "on+type, handler);} else [on}}, the in the the the in the in the emecevent] = null; getEvent : function (event) {return event? event? event : window.event;}, // getType : function (event) {return event.type;}, // 이벤트 대상 getTarget : function (event) {if (event.target) {return event.target;} else gettarget; (event) {if (event.target) {return event.target;} else {return event.srcelement;}}, // 이벤트 대상 gettarget : function (event) {if (event.target) {return event.srcelem; (event.stopPropagation) {event.stopPropagation ();} else {event.cancelBubble = true;}}, // event depault deptome eviation : function (event) {if (event.preventDefault) {event.preventDefault ();코드를 연습하는 동안 몇 가지 오류가 발생하여 작업 오류가 발생했습니다. 그것을 기록하고 내 기억을 심화시킵니다.
hance 핸들을 추가하는 것은 매개 변수가 난독 화 된 위치입니다. 첫째, Addeventhandler (요소, 유형, 핸들러)의 매개 변수는 각각 이벤트, 이벤트 유형 및 이벤트 처리 기능 처리기에 추가되는 요소 요소를 나타냅니다. 나중에 addeventlister (유형, 핸들러, 거짓)에서 핸들러와 거짓 (버블 링 단계를 나타냄)의 위치를 혼동하는 경향이 있습니다.
결과로 이어짐 : 작문 과정에서 나는 그것에 대해 신중하게 생각하고 Addeventhandler가 필요한 매개 변수를 이해 한 다음 어떤 위치에 어떤 매개 변수를 사용할 것인지 알았습니다. 마지막으로, 나는 그것을 올바르게 썼고 오류를 일으키지 않았습니다.
해결책 : 이해하고 기억하십시오.
IE 이벤트 핸들러 판단 지점에서 첨부 및 분리 벤트는 잘못된 철자가 표시되고 이벤트가 누락되어 첨부 또는 분리 만 작성됩니다.
결과 원인 : 오류는 없지만 addeventhandler 및 removeeventhandler를 사용하여 IE에서 이벤트를 추가하거나 삭제하는 것은 불가능합니다.
해결책 : 더 많은 연습을하고 기억하십시오. Attachevent와 Detachevent.
③ IE 이벤트 핸들러 첨부 및 DetacheVent의 매개 변수에 "on"을 추가하는 것을 잊었습니다. 첨부 이벤트 (유형, 핸들러)로 작성되었습니다. 실제로 올바른 것은 첨부 이벤트 ( "+유형, 핸들러) 여야하며 DOM0 레벨 이벤트 처리를위한 판단 지점이 있다는 것을 잊어 버렸습니다.
원인 결과 : 마찬가지로, 즉, 즉 이벤트 처리는 호환되지 않습니다. IE에서 캡슐화 된 방법을 사용하여 이벤트 추가 또는 삭제는 성공할 수 없습니다.
해결책 : 기억 만 기억하십시오. 또 다른 점 : 요소 [ "on"+type]은 DOM0 레벨 이벤트에 사용됩니다. 예를 들어, 요소 [ "on"+"Click"]는 ementcle.onclick과 동일합니다.
∎ 마지막 속성은 이벤트를 차단할 때 PreverDefault의 기본 동작과 같은 마지막에 쉼표로 추가됩니다. 완료 후 쉼표를 추가하여 다음 코드 스 니펫 (댓글).
PREVERDEFAULT : function (event) {if (event.preventDefault) {event.preventDefault ();} else {event.returnValue = false;}}, // 완료 후 쉼표가 추가됩니다. 오류가 발생합니다}}결과 원인 : IE에서 실행할 때 오류 가보고되었습니다 (여기서 event.js의 54 행은 마지막 쉼표의 다음 줄입니다. 실제로 쉼표로 인한 Line 10의 행 10 행 eventUtil.addeventhandler 메소드가 호출되기 때문에 호출됩니다.
해결책 : 의심 할 여지없이 마지막 쉼표를 제거하십시오.
∎ 여전히 철자 오류입니다. 즉, Bubbled Up의 이벤트를 방지하는이 부동산 취소되었습니다.
결과 : 오류는보고되지 않았지만 IE의 사건은 거품을 방지 할 수 없습니다.
해결책 : 다시 변경하십시오
위는 JavaScript가 DOM 이벤트 핸들러를 Event.js로 캡슐화하는 저수준 오류 문제입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!