Há dias colocaram-me uma dúvida engraçada :).
Um colega meu tinha o código todo cheio de alerts, e em vez de mostrar a caixa normal que é apresentada no javascript queria apresentar uma MsgBox do VB sem ter que alterar qualquer código.
Após alguns testes cheguei a este resultado:
<script Language="VBScript">
Function vbalert(e)
MsgBox e
End Function
</script>
<script Language="JavaScript">
function alert(e){
vbalert(e);
}
alert('windows');
</script>
O que estamos aqui a fazer é a "redefinir" a função alert do javascript para fazer chamar a função vbalert que neste caso vai despoletar uma MsgBox. Ao invés disso, poderiamos fazer mostrar uma DIV p.e. ou até utilizar o jQuery Dialog (componente do jQuery que desconhecia até então e que um colega me mostrou).
O contrário também é possivel (chamar javascript a partir do vbscript).
Mas surge agora uma questão. Visto que estamos a fazer override duma função javascript, como fariamos para extender a função nativa, isto é, preservar o que ela faz, mas adicionar comportamento nosso, neste caso invocar a nossa msgbox vb?
Aqui vai a solução:
<script language="javascript">
window.alert = function(native) {
return function(e) {
native(e);
vbalert(e);
}
}(window.alert);
<script>
O segredo aqui é o closure...No próximo post, explicarei o conceito do closure que é bastante util no javascript e explica na perfeição o funcionamento desta rotina
Sem comentários:
Enviar um comentário