이벤트 처리기 (예 : onclick
)를 HTML 요소에 바인드하는 외부 타사 스크립트를 사용하고 있습니다. 내 스크립트에서 같은 요소에 대한 이벤트 처리기의 조건에 따라 실행 여부를 제어하려고합니다. 나는 event.stopImmediatePropagation()
을 시도했지만 작동하지 않았다. 바닐라 JS로 어떻게 할 수 있습니까?바닐라 JS를 사용하여 동일한 요소에 대한 이벤트 처리기를 조건부로 차단하는 방법은 무엇입니까?
Example on JSBin : 상기 코드의
<script> //third-party script, cannot edit
document.getElementById('test').addEventListener('click', function (e) {
alert('clicked');
});
</script>
<script> //my script, can edit
document.getElementById('test').addEventListener('click', function (e) {
if (document.getElementById('block').checked) {
//block click event from third-party script
}
});
</script>
는 alert('clicked')
는 단지 일례이다. 실제로는 이벤트 처리기에 붙여 넣을 수없는 복잡한 논리가 많이 있습니다.
익명의 이벤트 수신기를 (프로그램에서) 제거 할 수있는 방법은 없습니다. – mehulmpt
분명히 요소를 다시 만들지 않는 한 – mehulmpt
@MehulMohan 방법이 있어야합니다! – niutech