Cara, o código que você enviou tá faltando um }. Mas acho que não é isso não.
Você está no Chrome, certo? Aperta f12 ou crtl+shift+c que ele abre uma janela de desenvolvimento.
Vá em Script e dá uma olhada no erro, posta aqui pra gente
O script considera o seguinte: se o objeto window possui o atributo event então o browser é IE, e o código da tecla é recuperado pelo e.keyCode
Por outro lado, se o objeto e possui o atributo which então é o Firefox, e o código é recuperado pelo e.which
Infelizmente eu não tenho chrome aqui para testar, mas meu palpite é que ele tem alguma combinação “diferente”, por exemplo suporta o window.event mas não o e.keyCode . Debugando vc vai conseguir identificar isso.
Eu deixaria um pouco mais simples:
if (e.which) {
tecla = e.which;
} else {
// Nao suporta o which, assumimos que o keyCode é o que funciona nesse browser
tecla = e.keyCode;
}
Ou melhor ainda, livre-se para sempre dos problemas de compatibilidade usando o jQuery:
tecla = $(e).which; // o jQuery padroniza tudo para which