문제

좋아, 나는 지금 이것을 오랫동안 알아 내려고 노력했고 마침내 조사 할 시간을 갖고있다. 제목이 "차이점은 무엇입니까"라고 제안한 바와 같이? 나는 이것이 내가 원하는 방식으로 작동한다는 것을 안다.

    addLoadEvent(converter);

// Converter
function converter() {
    var pixels = document.getElementById("pixels");
    pixels.addEventListener("keyup", updateNode, true);
    pixels.addEventListener("keydown", updateNode, true);
}

그러나 이것은 그렇지 않으며 한 번만 실행됩니다.

    addLoadEvent(converter);

// Converter
function converter() {
    var pixels = document.getElementById("pixels");
    pixels.onkeydown = updateNode;
    pixels.onkeyup = updateNode;
}

내가 부족한 것 ... 차이점은 무엇입니까? 주제에 대한 모든 링크는 도움이됩니다.

내 가정은 핸들러가 청취자처럼 행동해야한다고 생각했지만 그렇지 않습니다. 실제로 청취자는 AddLoadevent 함수에 추가되어야합니까?

도움이 되었습니까?

해결책

addEventListener 추가합니다 이벤트 핸들러 기능. 이런 식으로 무제한의 이벤트 핸들러가있을 수 있습니다.

환경 onxxxxx 세트 이벤트 처리기 하나의 기능.

로부터 모질라 개발자 센트럴:

AddeventListener는 단일 대상에 단일 이벤트 리스너를 등록합니다. 이벤트 대상은 문서, 문서 자체, 창 또는 xmlhttprequest의 단일 노드 일 수 있습니다.

대상에 대해 둘 이상의 이벤트 리스너를 등록하려면 동일한 대상이지만 다른 이벤트 유형 또는 캡처 매개 변수로 addeventListener를 호출하십시오.

그리고 봐라 같은 문서 의이 장 오래된 것의 비교를 위해 onxxxx 방법.

다른 팁

ECMA 스크립트는 핵심이 매우 유연하기 때문에 함수, 메소드 ... 사실상 모든 것 ... 변수에 함수를 할당 할 수 있으므로 "addeventListener"와 같은 변수에 함수를 첨부하는 추가 기능을 갖는 것은 내 모든 디자인을 의미합니다. .

그래서 당신이 저에게 묻는다면, 나는 당신에게 Pekka가 말한 모든 것을 말해 줄 것입니다.

pixels.onkeydown = updateNode;

ECMA Script Language Natural 문입니다.

pixels.addEventListener("keydown", updateNode, true);

불필요한 DOM 보충 자료는 많은 개발자가 혼란스러워서 첫 번째 방법으로 한 번 설정하면 어떤 일이 일어날 지 생각하고 나중에 다른 스크립트는 잠재적으로 다른 방식으로 설정할 수 있습니다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top