Ir para conteúdo
Fórum Script Brasil
  • 0

Capturar chave pressionada no FF


Rafael Laurindo

Pergunta

Pessoal, como faço para capturar a chave pressionada no FF. Tentei isso:

    var e = window.event

    alert(e.which)

O erro retornado no firebug foi e is undefined

Obs.: No Opera funcionou numa boa, e no Google Chrome também. No FF eu só consegui fazer com que o e.which funcionasse, se eu passase o e como parâmetro através do html. onkeypress = "func(event)". Que doidera eim.

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Bom dia, tudo bem?

Segundo este link, a captura das teclas deve ser feita da seguinte maneira:

function doSomething(e) {
    if (!e) var e = window.event
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
}

Não testei e também não sei se vai funcionar. Qualquer coisa poste novamente.

Valeu Rafael.

Link para o comentário
Compartilhar em outros sites

  • 0

Não funcionou. Esse eu já havia pesquisado e testado anteriormente. Nada mais é que testar se no FF ou no IE. Deste jeito só funciona se eu fassar o evento via HTML como no exemplo abaixo.

<script type="text/javascript">
doSomething(e){
    if (e.keyCode) 
        code = e.keyCode;
    else if (e.which) 
        code = e.which;
    alert(code)
}
</script>

<input type="text" onkeyup="doSomething(event)"/>

Pode testar que deste jeito funciona. Isso não faz o menor sentido. O primeiro código postado, funciona perfeitamente no Opera.

Link para o comentário
Compartilhar em outros sites

  • 0

 Funcionou perfeitamente em qual navegador? Ou quais? 

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" >
	<title>Event</title>
<script type="text/javascript">
function doSomething(e) {
	if (!e) var e = window.event
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;
	alert(code)
}
</script>
</head>
<body>
<form>
	<input id="txtTel" onkeydown="doSomething()" maxlength="9" type="text" />
</form>

</body>
</html>

Pode testar aí, no FF não funciona.

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

  • 0

Pelo que entendi, em alguns navegadores (testei no FF) é passado um parâmetro para a função com o objeto event, enquanto em outros (testei no IE) esse parâmetro não é passado e é possível utilizar o objeto event diretamente na função (assim como o this).

Por exemplo, o código para Firefox fica assim:

function funcao(var_evento){
if(var_evento.keyCode) ... //utilizamos o parâmetro "var_evento"
}
Já no IE:
function funcao(){
if(event.keyCode) ...        //utilizamos o objeto "event" diretamente
}
Uma forma de adaptar o código aos dois navegadores é verificar se o parâmetro foi definido; se não, utilizar o objeto event. O problema está no modo a função é chamada. Um código do tipo:
<input id="txtTel" onclick="test()" maxlength="9" type="text" />
Equivale a:
document.getElementById("txtTel").onclick=function(){
test()
}
Assim, fica fácil perceber que ao incluir os parêntesis estamos chamando a função explicitamente sem lhe fornecer nenhum valor (seja o event global, o parâmetro "var_event" ou mesmo o this). O correto seria o seguinte código:
<input id="txtTel" onclick="test" maxlength="9" type="text" />
Isso equivale a esse JS:
document.getElementById("txtTel").onclick=teste

Ou seja, os parâmetros e o objeto event são passados para a função.

Por algum motivo, no entanto, esse código não funcionou no meu FF (sempre utilizava isso e funcionava). Na verdade se escrever no Javascript objeto.onclick=teste funciona, mas escrevendo <input onclick="teste"/> no HTML não.

Amanhã vou ver se consigo descobrir o porquê.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...