Existe uma maneira [universal] de invocar uma ação padrão depois de chamar event.preventDefault ()?

Esta pergunta é para fins de desenvolvimento de plugins jQuery e outros snippets JavaScript independentes que não exigem modificação de outros arquivos de script para compatibilidad

Todos sabemos que event.preventDefault () impedirá o evento padrão para que possamos executar uma função personalizada. Mas e se quisermos simplesmentedemor o evento padrão antes de invocá-lo? Eu já vi vários truques e soluções ninja específicas para cada caso, para invocar novamente a ação padrão, mas, como eu disse, meu interesse é de uma maneira universal: reativar o padrão e não lidar com os gatilhos padrão em um caso. caso a caso.

$(submitButton).click(function (e) {

    e.preventDefault();

    // Do custom code here.

    e.invokeDefault(); // Imaginary... :(
});

Mesmo para algo tão simples quanto o envio de formulários, parece não haver uma resposta universal. O$(selector).closest("form").submit() solução @ pressupõe que a ação padrão seja um envio de formulário padrão, e não algo maluco como um__doPostBack() função no ASP.NET. Ao final da invocação de retornos de chamada do ASP.NET, esse é o mais próximo que eu cheguei de uma solução universal de configurar e esquecer:

$(submitButton).click(function (e) {

    e.preventDefault();

    // Do custom code here.

    var javascriptCommand = e.currentTarget.attributes.href.nodeValue;
    evalLinkJs(javascriptCommand);
});


function evalLinkJs(link) {
    // Eat it, Crockford. :)
    eval(link.replace(/^javascript:/g, ""));
}

Suponho que poderia começar a escrever casos especiais para lidar com links normais com umwindow.location redirecionar, mas abriremos uma nova lata de worms - acumular cada vez mais casos de invocação de eventos padrão cria mais problemas do que soluçõe

Então que tal? Quem tem a bala mágica que eu estou procurando?

questionAnswers(5)

yourAnswerToTheQuestion