아래 코드에서 apply를 통해 addEventListener를 호출하려고하지만 웹킷의 콘솔에 "TypeError : Type error"가 표시됩니다.웹킷의 네이티브 JavaScript 메소드에서 apply/call 사용
addEvent = (function (handler) {
return function (element, event, fn) {
handler.apply(element, [event, fn, false]);
};
}(addEventListener || attachEvent));
나는 적용하고 메소드를 호출 전화를하지만 아무 소용에 모두 노력했다. 확실하지 않은 것을 놓치고 있는지, 또는 내가 아직 모르는 어떤 이유로 허락되지 않은 것을하려고 노력하고 있는가?
또 다른 기사는 이것에 대해 조금 이야기하고 있지만 정확히 어떻게 작동하려고하는지에 대해서는 언급하지 않았습니다. Using native code functions as JavaScript objects in WebKit. 이것은 다음 두 개의 이벤트 모델 간의 다른 차이를 줄이기 위해 확장 될 수
addEvent = (function() {
return addEventListener ?
function (element, event, fn) {
element.addEventListener (event, fn, false);
} :
function (element, event, fn) {
element.attachEvent ('on' + event, fn);
};
})();
: -
여기에 몇 가지 추상화가 있습니다. 'window.addEventListener.apply (anElement, [...])'는 anElement.addEventListener()와 동일하지 않을 것입니다. DOM api는 호스트 (os) 객체를 통해 구현 되었기 때문에 언어 사양에 맞춰야합니다 (즉, 사양이 다릅니다). 또한 IE의 * attachEvent *는 전달 된 이벤트 이름에 접두사 "on"을 요구합니다. –
이번이 처음으로 Stack에 게시되고 나는 그것을 좋아합니다. 기쁜 마음으로 저보다 더 똑똑하고 도움을 줄 수있는 사람들이 있습니다. 이렇게하는 더 좋은 방법은 다음과 같습니다. 요소 [handler.name] (event, fn, false); – kalisjoshua