alert
을 하나의 함수로 묶어야합니다. 이것은 작동합니다 :
ronan.addEventListener("click", function() { alert('Hi'); }, false);
여기 증거에 대한 fiddle입니다. alert
을 단독으로 사용해도 리스너가 실행될 때 해당 함수 내의 this
값이 수신 대기중인 객체로 설정되기 때문에 작동하지 않습니다. 예를 들어, 청취자를 ronan
에 설정하면 해당 청취자 내에서 this === ronan
입니다. 이것은 alert
에 문제가 있습니다. 그 이유는이 함수가 this
이 window
과 같을 것이기 때문입니다. 당신은 다른 함수에서 함수를 감싸서하거나 this
이 될 것으로 기대하고 무엇에 바인딩하여 (웃기려는 의도 없음)이 문제를 해결 할 수 있습니다
document.body.addEventListener('click', alert.bind(window), false);
IE < 9 당신이 attachEvent
를 사용할 필요가 잊지 마세요 addEventListener
대신.
당신이 window.addEventListener
에 인수를 적용하려고 노력하고 있기 때문에 다른 인 HTMLElement.prototype.addEventListener
반대로 작동하지 않습니다 addEventListener
두 번째 시도로 apply
/call
사용에 대한주의 사항 기능 모두 :
// This won't work
addEventListener.apply(ronan, ["click", alert.bind(window), false]);
// This will work
HTMLElement.prototype.addEventListener.apply(ronan, ['click', alert.bind(window), false]);
어쩌면 내가 제출할 아침까지 기다려야했는지 여부 –
'경고'일 수 있습니다 ... 네이티브 함수. 빈'function() {}'이 대신 작동합니까? – James
@ J-P 아니, 그게 도움이되지 않았다 –