IE8에서 addEventListener가 작동하지 않음
확인란을 동적으로 만들었습니다. 내가 사용하고 addEventListener
구글 크롬과 파이어 폭스에서 작동하지만 체크 박스의 클릭에 함수를 호출하는 인터넷 익스플로러 8에서 작동하지 않습니다 . 이것은 내 코드입니다.
var _checkbox = document.createElement("input");
_checkbox.addEventListener("click", setCheckedValues, false);
setCheckedValues
내 이벤트 핸들러입니다.
시험:
if (_checkbox.addEventListener) {
_checkbox.addEventListener("click", setCheckedValues, false);
}
else {
_checkbox.attachEvent("onclick", setCheckedValues);
}
업데이트 :: IE9 이전의 Internet Explorer 버전의 경우 attachEvent 메소드를 사용하여 지정된 리스너를 호출 된 EventTarget 에 등록 해야합니다. 다른 이벤트 는 addEventListener를 사용해야합니다.
attachEvent
IE9 이전의 IE 버전에서 사용해야 합니다. addEventListener
정의되어 있는지 여부를 감지 하고 attachEvent
그렇지 않은 경우 사용 하십시오.
if(_checkbox.addEventListener)
_checkbox.addEventListener("click",setCheckedValues,false);
else
_checkbox.attachEvent("onclick",setCheckedValues);
// ^^ -- onclick, not click
또한보십시오:
이것은 또한 간단한 크로스 브라우저 솔루션입니다.
var addEvent = window.attachEvent||window.addEventListener;
var event = window.attachEvent ? 'onclick' : 'click';
addEvent(event, function(){
alert('Hello!')
});
'클릭'대신 모든 이벤트가 될 수 있습니다.
IE는 addEventListener
버전 9까지 지원하지 않으므로을 사용해야 attachEvent
합니다. 예는 다음과 같습니다.
if (!someElement.addEventListener) {
_checkbox.attachEvent("onclick", setCheckedValues);
}
else {
_checkbox.addEventListener("click", setCheckedValues, false);
}
이벤트 처리를 다른 요소 (예 : 테이블)에 위임하면 더 쉽고 성능이 향상 될 수 있습니다.
$('idOfYourTable').on("click", "input:checkbox", function(){
});
이러한 방식으로 하나의 이벤트 핸들러 만 있으며 새로 추가 된 요소에도 적용됩니다. jQuery> = 1.7이 필요합니다.
그렇지 않으면 delegate ()를 사용하십시오.
$('idOfYourTable').delegate("input:checkbox", "click", function(){
});
아래 addEvent () 함수를 사용하여 대부분의 경우에 이벤트를 추가 if (el.attachEvent)
할 수 있지만 IE8에서는 XMLHttpRequest 가 지원되지 않으므로 대신 XMLHttpRequest.attachEvent()
사용해야 XMLHttpRequest.onload = function() {}
합니다.
function addEvent(el, e, f) {
if (el.attachEvent) {
return el.attachEvent('on'+e, f);
}
else {
return el.addEventListener(e, f, false);
}
}
var ajax = new XMLHttpRequest();
ajax.onload = function(e) {
}
I've opted for a quick Polyfill based on the above answers:
//# Polyfill
window.addEventListener = window.addEventListener || function (e, f) { window.attachEvent('on' + e, f); };
//# Standard usage
window.addEventListener("message", function(){ /*...*/ }, false);
Of course, like the answers above this doesn't ensure that window.attachEvent
exists, which may or may not be an issue.
If you use jQuery you can write:
$( _checkbox ).click( function( e ){ /*process event here*/ } )
if (document.addEventListener) {
document.addEventListener("click", attachEvent, false);
}
else {
document.attachEvent("onclick", attachEvent);
}
function attachEvent(ev) {
var target = ev.target || ev.srcElement;
// custom code
}
참고URL : https://stackoverflow.com/questions/9769868/addeventlistener-not-working-in-ie8
'IT박스' 카테고리의 다른 글
제출 버튼없이 Enter 키를 사용하여 양식을 제출 하시겠습니까? (0) | 2020.07.19 |
---|---|
C ++ 코드의 이중 부정 (0) | 2020.07.19 |
집계 함수가없는 TSQL 피벗 (0) | 2020.07.19 |
Mac OS의 IntelliJ IDEA JDK 구성 (0) | 2020.07.19 |
입력 내 패딩은 너비 100 %를 끊습니다. (0) | 2020.07.19 |