최근 JavaScript 이벤트 처리 메커니즘을 사용하여 몇 가지 정보를 찾았습니다.
예전에는 자바스크립트 프로그램을 작성할 때 이벤트를 모두 사용했습니다
Object.event = handler;
이 초기화됩니다. 이 방법은 Internet Explorer, Mozilla/Firefox 및 Opera에서 일반적입니다. 그러나 한 가지 문제는 이 방법이 하나의 이벤트 처리 프로세스에만 대응할 수 있다는 것입니다. 이벤트가 여러 처리 프로세스를 순차적으로 실행하도록 하려는 경우 사용하기 쉽지 않습니다.
그러나 Internet Explorer는 5.0부터attachEvent 메소드를 제공합니다. 이 메소드를 사용하면 하나의 이벤트에 여러 처리 프로세스를 할당할 수 있습니다. AttachEvent는 현재 Opera에도 적용 가능합니다. 하지만 문제는 Mozilla/Firefox가 이 방법을 지원하지 않는다는 것입니다. 그러나 이는 attachmentEvent와 유사하고 이벤트에 여러 처리 프로시저를 할당하는 데에도 사용되는 또 다른 addEventListener 메소드를 지원합니다. 그러나 할당하는 이벤트에는 약간의 차이가 있습니다.attachEvent 메소드에서는 이벤트가 "on"으로 시작하지만 addEventListener에서는 이벤트가 "on"으로 시작하지 않습니다. 또한 addEventListener에는 일반적으로 세 번째 매개변수가 있습니다. 매개변수가 false로 지정되었습니다.
따라서 프로그램의 이벤트에 여러 처리 절차를 할당하려면 먼저 브라우저를 결정한 다음 다른 브라우저에 따라 attachmentEvent 또는 addEventListener를 사용하도록 선택하면 됩니다. 예시는 다음과 같습니다.
if(document .all) {
window.attachEvent('onload', handler1);
window.attachEvent('onload', handler2)
}
else {
window.addEventListener('load ', handler1, false) ;
window.addEventListener('load', handler2, false);
}
참고: attachmentEvent에 의해 할당된 여러 프로세스의 실행 순서는 무작위이므로 실행은 이러한 프로세스 간의 순서는 무작위입니다. 또한,attachEvent, addEventListener는 window 객체에만 적용 가능한 것이 아니라 다른 객체에서도 이 메서드를 지원합니다.
function addEvent(obj, evenTypeName, fn) {
if (obj.addEventListener){
obj.addEventListener(evenTypeName, fn, true);
return true
} else if (obj.attachEvent){
return obj.attachEvent ("on " evenTypeName, fn);
} else {
return false
}
}