2012-12-04 3 views
1

Firefox 및 Chrome에서 제 코드는 잘 작동하지만 IE에서는 이벤트가 제거되지 않습니다.Internet Explorer에서 이벤트 리스너 제거

dojo.connect(d, "onmouseout", function(evt) { //remove event });

나는 document.removeEventListener("keydown", keyHandler); dojo.disonnect(document,"keydown",keyHandler); document.detachEvent("keydown", keyHandler); 을 시도했다 그러나 아무것도 작동하는 것 같다 없습니다. keyHandler는 마우스가 변수 d에 저장된 캔버스 밖에있을 때 keydown에서 실행하고 싶지 않은 함수입니다.

답변

1

다음 명령으로 작업 할 수 있도록 관리 : document.onkeydown = null;

0

disconnect 기능을 올바르게 사용하고 있는지 확인하고 철자/구문도 확인하십시오. documentation는 말한다 : 그것은, 우연히 dojo.connect의 반환 값 만 인수의로

분리()가 특수하게 조작 된 매개 변수를 받아들입니다.

... 3 개의 매개 변수를 제공하는 동안 핸들러는 마지막 것입니다. 보조 노트로

, 나는 (당신이 도장을 사용하는 경우 기본 기능을 사용하지 않아도 아마하는 polyfill을 구현하지만) 도장 내부에서 일어나는 일에 대해 아주 잘 모르겠지만, IE의는 attachEventdetachEvent 이벤트를 받아 이름 앞에 'on'이 붙은 이름 onmouseout, onkeydown ( MSDN article 참조).

또한 이벤트 이름의 차이점에 유의하십시오. Dojo는 접두사가 on 인 IE의 구문을 사용하는 반면, 표준 DOM 구현 인 omits it을 사용하는 것으로 보입니다. 따라서 동일한 이벤트를 바인딩하고 바인딩을 해제 할 것인지 확인해야 할 수 있습니다 (예 : onkeydown에 바인딩하는 경우 이 아닌 keydown이 바인딩 해제되어야 함).

관련 문제