Es posible capturar programáticamente todos los eventos en la página en el navegador?

En primer lugar, aquí hay una lista de tipos de eventos definidos por los estándares del W3C. (Esta lista se basa en los atributos onevent definidos en el estándar HTML5. Supongo que hay docenas de otros tipos de eventos, pero esta lista es lo suficientemente larga como es).

aborta afterprint beforeprint beforeunloaddifuminaPoder juga canplaythroughcambihacer cliMenú de contextdupd cuechangecorta dblclick DOMContentLoadedarrastra dragend dragenter dragleave dragover dragstartsolta Durationchange vaciado terminóerroatencióconcéntrate e focusout formchange forminput hashchangeentradinválid keydown keypresstecla Arribcarg loadeddata loadedmetadata loadstartmensajratón hacia abaj mouseenter mouseleavemovimiento del rató mouseoutratón sobr mouseuprueda de ratódesconectaden líne pagehide pageshowpegapausjugajugand popstateProgres ratechange readystatechangerehaceReinicia redimensionarvolut buscado buscandoseleccionamostra estancadoalmacenamientenviasuspende timeupdatedeshacedescarga volumechangeesperand

Ahora, ¿es posible definir un controlador de eventos global que se llame cuandoningunl evento @ ocurre originalmente enningun elemento en la página? (En este caso, no quiero contar los eventos que ocurrieron en los elementos porque surgieron de un elemento descendiente, es por eso que escribí "ocurre originalmente").

Si eso no es posible, ¿es al menos posible definir un controlador de eventos que se llame cuandoningunl evento @ aparece en la raíz del árbol DOM (que es eldocument objeto o elwindow objeto - ambos deberían funcionar)? (Sé que es posible dejar de burbujear mediante programación, pero usaría este controlador de eventos en una página que no tiene otros controladores definidos en ningún otro elemento). (Además, creo que algunos eventos no aparecen, pero ignoremos estos casos por el bien de este argumento.)

Sé que puedo hacer esto (usando jQuery):

$(document).bind('abort afterprint beforeprint beforeunload etc.', function() {
    // handle event
});

pero esa sería una solución bastante indeseable para mí.

btw No necesito una solución de navegador cruzado. Si funciona en un solo navegador, estoy bien.

También,Firebug puede registrar eventos, pero me gustaría poder captar el evento mediante programación (a través de JavaScript) en lugar de simplemente iniciar sesión en la consola.

Respuestas a la pregunta(5)

Su respuesta a la pregunta