document.body.childNodes[0].addEventListener('mouseover',ex.exampl,true);
만 파이어 폭스 window.event
이 정의되지 않은 것을 말한다을 ..
나는 무엇을 해야할지 모르겠다. 웹킷 브라우저와 오페라에서 잘 작동합니다 (MSIE에서는 확인할 수 없으며 걱정하지 않습니다).
왜 발생합니까?
document.body.childNodes[0].addEventListener('mouseover',ex.exampl,true);
만 파이어 폭스 window.event
이 정의되지 않은 것을 말한다을 ..
나는 무엇을 해야할지 모르겠다. 웹킷 브라우저와 오페라에서 잘 작동합니다 (MSIE에서는 확인할 수 없으며 걱정하지 않습니다).
왜 발생합니까?
전달 된 매개 변수 (이 경우 e
)를 사용하여 이벤트를 가져 오십시오. 나는 이것을 테스트했으며 window.event
과 e
은 크롬에서 지원됩니다.
var ex = {
exampl: function(e){
console.log(window.event);
console.log(e);
//check if we have "e" or "window.event" and use them as "evt"
var evt = e || window.event
}
}
"addEventListener"를 변경해야합니까? –
아니요, 그대로 유지됩니다. – Joseph
감사합니다. 필자는 FF로 작동하기 때문에 다음과 같이 매우 유용했습니다 :'exampl : function (e) {if (window.event &&! e) e = window.event; var ref = e.target || e.srcElement;} '. –
window.event
파이어 폭스에 존재하지 않기 때문에
크롬에도 기본적으로 적용되지 않습니다. 모든 이벤트 트리거가 자체 이벤트 객체를 전달하는 대신 IE는 window.event에 속성을 추가하고이를 전달했습니다. 한 번에 하나의 이벤트 만 처리 했으므로이 방법이 효과적이었습니다. 모든 브라우저에는 window.Event가 있어야합니다. window.Event는 이벤트 객체의 실제 생성자입니다. IE8 이하에서 'window.event'가 보이면 빈 탭에서 콘솔을 열고 거기에 로깅하거나 경고하십시오. 기회는 당신이보고있는 페이지에 수동으로 추가하는 것입니다.
당신이 이벤트 핸들러에 대한 crossbrowser 정상화 코드를 보면, 자주 볼 수 있습니다 :
이벤트가 IE의 이전 버전을 처리 정상화 코드의if(!e){ e = window.event; }
. 현대의 브라우저에서 e는 윈도우의 속성에 대한 참조가 아닌 인수를 통해 전달되는 자체 객체 여야합니다.
window.event
은 기능이 아닙니다. 버그입니다. MDN을 인용
:
window.event
는 DOM 이벤트 핸들러가 호출되는 동안 만 사용할 수있는 독점적 인 마이크로 소프트 인터넷 익스플로러의 속성입니다. 이 값은 현재 처리중인 Event 객체입니다.
그리고 가장 중요한 : 어떤 사양의
일부가 아닙니다.
window.event
그렇게 어떤 브라우저를 지원하기 위해 기대하지 않는다, 비 표준입니다.
element.addEventListener()
의 콜백 함수의 첫 번째 매개 변수는 Event
개체입니다. window.event
대신 사용하십시오.
이것은 올바른 방향으로 나를 지적했습니다! 클릭 이벤트와 보조 인수를 모두 가져와야했습니다. 함수의 첫 번째 인수는 이벤트 여야하며 함수 호출에이 인수를 포함해야한다고 말하면서; onclick = 'myClickEvent (event, mySecondAttr);와 같이 – SteinIP
올바른 질문은 다른 브라우저에서 작동하는 이유는 무엇입니까? –