사용자가 요소 위에 마우스를 놓고 이벤트를 제거하면 처음부터 뭔가 할 수있는 코드가 있습니다.IE에서 이벤트 처리
W3C 이벤트 모델 브라우저에서는 훌륭하게 재생되지만 IE6-8에서는 오류가 계속 발생합니다. 다른 질문에서 코드를 얻었고 IE를 처리 할 것이라고 믿었습니다. 누구든지 내가 뭘 잘못하고 있는지 알아?
<script type="text/javascript">
function setMouseEvent() {
//Tel: 01 8279 400
event = addEvent(document.getElementById('contactButton'), 'mouseover', changeText);
}
function changeText() {
alert("worked!");
removeEvent(document.getElementById('contactButton'), 'mouseover', changeText);
}
function addEvent(obj, type, fn) {
if (typeof obj.addEventListener != undefined) {
obj.addEventListener(type, fn, false);
}
else if (typeof obj.attachEvent != undefined) {
obj.attachEvent("on" + type, fn);
}
}
function removeEvent(obj, type, fn) {
if (typeof obj.addEventListener != undefined) {
obj.removeEventListener(type, fn, false);
}
else if (typeof obj.attachEvent != undefined) {
obj.detachEvent("on" + type, obj[type + fn]);
obj[type + fn] = null;
obj["e" + type + fn] = null;
}
}
window.onload = setMouseEvent;
</script>
업데이트 : 난 그냥 문제없이 크롬, 오페라와 FF 최신 테스트하지만 언급 한 바와 같이 내가 마우스 이상 및 IE는 온로드 오류를 던지고 때 사파리는 아무것도하지 않습니다.
윽. 'removeEvent'는 어디서 얻었습니까? John Resig의 구현 (http://ejohn.org/blog/flexible-javascript-events/)과 유사하지만'addEvent'와 대칭이 아닙니다. –
어쩌면 나는 단순한 사람일지도 모르지만 이것이 내 페이지라면 간단한 호출 플래그를 가진 원샷 이벤트 처리기를 다루겠다. 첫 번째 호출 이후에 나는 뒤집을 것이다. 만약 내가 정말로 * 많은 이벤트를 논쟁하고 싶다면, 잘 테스트 된 프레임 워크가 추한 세부 사항을 다루도록 할 것입니다. – Pointy
jQuery를 다시 잡는 것에 가까웠지만 이번에는 조금 파고 싶었습니다. 항상 배우고 싶다. –