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?