--- title: CustomEvent slug: Web/API/CustomEvent tags: - API - DOM - Interfaz - Referencia translation_of: Web/API/CustomEvent ---
{{APIRef("DOM")}}La interfaz CustomEvent
representa eventos inicializados por una aplicación para cualquier propósito.
{{AvailableInWorkers}}
Crea un CustomEvent
.
Esta interfaz hereda las propiedades de su padre, {{domxref("Event")}}:
{{Page("/es/docs/Web/API/Event", "Propiedades")}}
Inicializar un objeto CustomEvent
. Si el evento ya ha sido enviado, este método no hace nada.
Esta interfaz hereda los métodos de su padre, {{domxref("Event")}}:
{{Page("/es/docs/Web/API/Event", "Métodos")}}
Especificación | Estado | Comentario |
---|---|---|
{{SpecName('DOM WHATWG','#interface-customevent','CustomEvent')}} | {{Spec2('DOM WHATWG')}} | Definición inicial. |
{{Compat("api.CustomEvent")}}
Al disparar un CustomEvent desde código privilegiado (una extensión) a un código no-privilegiado (una página web), deben considerarse algunos problemas de seguridad. Firefox y otras aplicaciones Gecko restringen al objeto creado desde un contexto siendo directamente utilizado por otro, el cual automáticamente evitará los agujeros de seguridad, pero estas restricciones también pueden impedir que su código se ejecute como esperaba.
Al crear un objeto CustomEvent, debes crear el objeto desde la misma ventana. El atributo detail
de tu CustomEvent estará sujeto a las mismas restricciones. Los valores de String y Array serán legibles sin restricciones por el content, pero los objetos personalizados no lo harán. Al utilizar un objeto personalizado, necesitaras definir que atributos de ese objeto se pueden leer desde la secuencia de comandos de contenido usando Components.utils.cloneInto().
// doc es una referencia al contenido del documento function dispatchCustomEvent(doc) { var eventDetail = Components.utils.cloneInto({foo: 'bar'}, doc.defaultView); var myEvent = doc.defaultView.CustomEvent("mytype", eventDetail); doc.dispatchEvent(myEvent); }
Pero hay que tener en cuenta que exponer una función permitirá que el script content lo ejecute con privilegios de chrome, lo que puede abrir una vulnerabilidad de seguridad.