Javascript RemoveEventListener가 작동하지 않음
이 코드에서는 addEventListener() 메서드를 사용하여 이벤트 리스너가 요소에 추가됩니다.
area.addEventListener('click',function(event) ...,true);
나중에 다른 함수에서 RemoveEventListener() 메서드를 사용하여 이벤트 리스너를 제거하려고 시도합니다.
area.removeEventListener('click',function(event) ...,true);
그러나 이벤트 리스너는 제거되지 않습니다. 왜 이런 일이 발생합니까?
문제:
문제는 addEventListener() 및 RemoveEventListener() 메서드에 인수로 전달된 두 개의 익명 함수가 두 개의 다양한 기능. 다음 코드를 사용하여 이벤트 리스너를 추가하는 경우:
area.addEventListener('click',function(event) ...,true);
런타임은 새로운 고유 익명 함수 객체를 생성하고 이를 영역 요소의 클릭 이벤트 핸들러에 할당합니다.
이벤트 리스너는 다음 코드를 사용하여 제거됩니다.
area.removeEventListener('click',function(event) ...,true);
다른 새롭고 고유한 익명 함수 객체가 생성되어 영역 요소의 클릭 이벤트 핸들러에 할당됩니다. 첫 번째 함수는 제거되지 않으므로 클릭 이벤트를 계속 처리합니다.
해결 방법:
이벤트 리스너를 올바르게 제거하려면 RemoveEventListener() 메서드를 제공해야 합니다. addEventListener() 메서드에 전달된 동일한 함수 객체에 대한 참조를 사용합니다. 이렇게 하려면 이벤트 리스너를 명명된 함수로 정의한 다음 명명된 함수를 addEventListener() 및 RemoveEventListener() 메서드 모두에 대한 인수로 사용해야 합니다. 예:
function foo(event) { app.addSpot(event.clientX,event.clientY); app.addFlag = 1; } area.addEventListener('click',foo,true); area.removeEventListener('click',foo,true);
위 내용은 JavaScript RemoveEventListener()가 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!