--- title: CustomEvent slug: Web/API/CustomEvent tags: - API - DOM - Interface - NeedsCompatTable - NeedsExample - Reference translation_of: Web/API/CustomEvent ---
{{APIRef("DOM")}}CustomEvent
인터페이스는 어플리케이션의 어떤 목적에 의해 초기화된 이벤트를 나타냅니다.
{{AvailableInWorkers}}
CustomEvent
를 생성합니다.이 인터페이스는 그 부모인 {{domxref("Event")}} 로부터 프로퍼티를 상속받습니다:
{{Page("/en-US/docs/Web/API/Event", "Properties")}}
CustomEvent
객체를 초기화합니다. 이벤트가 이미 디스패치되었다면, 이 메소드는 아무것도 하지 않습니다.
이 인터페이스는 그 부모인 {{domxref("Event")}} 로부터 메소드를 상속받습니다:
{{Page("/ko/docs/Web/API/Event", "Methods")}}
명세 | 상태 | 코멘트 |
---|---|---|
{{SpecName('DOM WHATWG','#interface-customevent','CustomEvent')}} | {{Spec2('DOM WHATWG')}} | 초기 정의. |
{{Compat("api.CustomEvent")}}
CustomEvent 를 권한 코드(예, 확장 기능)에서 비권한 코드(예, 웹페이지)로 실행할 때, 보안 문제를 고려해야 합니다. Firefox 와 다른 Gecko 어플리케이션은 한 컨텍스트에서 생성된 객체가 다른 곳에서 바로 사용되는 것을 제한하여 보안상의 문제를 자동으로 방지하지만, 이는 여러분의 코드가 예상한대로 실행되는 것을 제한하기도 합니다.
CustomEvent 객체는 반드시 동일한 창에서 생성해야 합니다. CustomEvent 의 detail
속성도 동일하게 제한됩니다. String 과 Array 값은 제한 없이 그 컨텐츠를 읽을 수 있지만, 커스텀 객체는 그렇지 않습니다. 커스텀 객체를 사용할 때, Components.utils.cloneInto() 를 사용해 컨텐츠 스크립트에서 읽을 수 있는 객체의 속성을 정의해야 합니다.
// doc 은 컨텐츠 다큐먼트의 참조입니다 function dispatchCustomEvent(doc) { var eventDetail = Components.utils.cloneInto({foo: 'bar'}, doc.defaultView); var myEvent = doc.defaultView.CustomEvent("mytype", eventDetail); doc.dispatchEvent(myEvent); }
함수 노출은 크롬 권한으로 실행하기 위한 컨텐츠 스크립트를 허용하여 보안 취약점에 열려있다는 점을 주의하시기 바랍니다.