Development Tip

IE11에서 dispatchEvent가 작동하지 않음

yourdevel 2021. 1. 6. 20:31
반응형

IE11에서 dispatchEvent가 작동하지 않음


다음 코드를 사용하여 양식을 제출하고 있습니다.

element.dispatchEvent(new Event("submit"));

Inspector에서 오류를 반환합니다. 개체가이 작업을 지원하지 않습니다.

이것은 Chrome에서 작동합니다.

이 명령의 목적은 클릭 할 때 양식에서 제출 이벤트를 호출하는 부서를 만드는 것입니다.

Jquery는 옵션이 아닙니다.


이것은 향후 변경 사항을 고려하여 IE11 및 기타 브라우저에서 작동하도록 만드는 가장 좋은 방법입니다.

var event;
if(typeof(Event) === 'function') {
    event = new Event('submit');
}else{
    event = document.createEvent('Event');
    event.initEvent('submit', true, true);
}

$el.dispatchEvent(event);

방금 똑같은 문제가 있었지만 다음은 IE11에서 작동하는 것 같습니다.

var event = document.createEvent("Event");
event.initEvent("submit", false, true); 
// args: string type, boolean bubbles, boolean cancelable
element.dispatchEvent(event);

이 문제를 해결하려면 폴리 필을 사용하는 것이 가장 좋습니다. (맞춤 이벤트 폴리 필)

# using yarn 
$ yarn add custom-event-polyfill

# using npm 
$ npm install --save custom-event-polyfill

그런 다음 자바 스크립트에 포함 / 요구하십시오.

import 'custom-event-polyfill';

https://www.npmjs.com/package/custom-event-polyfill


나는 다양한 접근 방식의 조각과 조각을 모아서 이것을 작동시켰다.

var customEvent = document.createEvent('HTMLEvents');
customEvent.initEvent('myCustomEvent', true, true);
document.dispatchEvent(customEvent);

솔직히 말해서 이것은 나에게별로 말이되지 않는다. 문서에 이벤트 ( HTMLEvents필요한 이름 지정)를 생성 한 다음 다른 이름으로 해당 이벤트를 초기화합니다. 누구든지 이것을 더 잘 설명 할 수 있다면 답변에 포함될 수 있도록 아래에 의견을 추가하십시오.

어쨌든 표준 이벤트 리스너를 사용하여 IE11 (및 최신 브라우저)에서이 사용자 지정 이벤트를 수신 할 수 있습니다.

document.addEventListener('myCustomEvent', function(){
  console.log('Event received.');
});

참조 URL : https://stackoverflow.com/questions/27176983/dispatchevent-not-working-in-ie11

반응형