É possível capturar programaticamente todos os eventos na página no navegador?

Primeiro, aqui está uma lista de tipos de eventos que são definidos pelos padrões do W3C. (Esta lista é baseada nos atributos onevent definidos no padrão HTML5. Suponho que haja dezenas de outros tipos de eventos, mas essa lista é longa o suficiente.)

abortarpós-impressãoantes da impressãoantes da cargaborrãopode jogarcanplaythroughmudançacliquemenu contextualcópia demudançacortardblclickDOMContentLoadedarrastoarrastardragenterarrastararraste sobredragstartsoltadurationchangeesvaziadoterminouerrofocofoco nofocusoutmudança de formaforminputhashchangeentradainválidokeydownpressione o botãokeyupcargaloadingdataloadingmetadataloadstartmensagemmousedownmouseenterratoeiraratoeiramouseoutpasse o rato por cimamouseuproda do mousedesligadaconectadosocultar páginapageshowcolarpausaToquejogandopopstateprogressotaxa de câmbioreadystatechangerefazerrestabelecerredimensionarrolagembuscouprocurandoselecionarmostrarparadoarmazenamentoenviarsuspendertimeupdatedesfazerdescarregarmudança de volumeesperando

Agora, é possível definir um manipulador de eventos global chamado quandoqualquer evento ocorre originalmente emqualquer elemento na página? (Nesse caso, não quero contar os eventos que ocorreram nos elementos porque eles surgiram de um elemento descendente - foi por isso que escrevi "originalmente ocorre".)

Se isso não for possível, é pelo menos possível definir um manipulador de eventos chamado quandoqualquer O evento borbulha até a raiz da árvore do DOM (que é odocument objeto ou owindow objeto - ambos devem funcionar)? (Eu sei que é possível parar de borbulhar programaticamente, mas eu usaria esse manipulador de eventos em uma página que não possui outros manipuladores definidos em outros elementos.) (Além disso, acredito que alguns eventos não surgem, mas vamos ignorá-los por causa deste argumento.)

Eu sei que posso fazer isso (usando jQuery):

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

mas isso seria uma solução bastante indesejável para mim.

Aliás, não preciso de uma solução entre navegadores. Se funcionar em apenas um navegador, eu estou bem.

Além disso,O Firebug pode registrar eventos, mas gostaria de poder capturar o evento programaticamente (via JavaScript) em vez de simplesmente registrá-lo no console.

questionAnswers(5)

yourAnswerToTheQuestion