segunda-feira, maio 15, 2006

Captura de teclas em Javascript - Parte 2

Demorei pra escrever a segunda parte desse pequeno tutorial, mas antes tarde do que nunca. No post anterior eu expliquei brevemente o funcionamento da captura de teclas em Javascript. Neste vou colocar uma receitinha de bolo.

Segue o código, compatível com IE e Firefox. Qualquer dúvida com os comentarios, entre em contato:


document.onkeyup=handleKeyboardAction;

function handleKeyboardAction(e){

var code;

// Obtém o evento. No caso do Firefox, este
// evento é passado como argumento, e no caso do IE,
// deve ser obtido através do objeto window.
if (!e) var e = window.event;

// Detecta o target da tecla
var targ;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;

// Este código previne um erro do navegador Safari:
// Se o usuari clica num DIV com texto, os outros browsers
// retornam o DIV como sendo o target. Safari retorna o nó contendo
// o texto (nodeType 3). Nesse caso, o target que nos interessa é o pai.
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;

// Obtém o nome da TAG HTML do target do evento
tag = targ.tagName.toUpperCase();

// Verifica se o evento não esta sendo acionado em nenhum
// campo como campo de texto e combobox.
// Esta verificação é importante, pois o handler pode bloquear
// o funcionamento adqueado desses campos (por exemplo, em vez de escrever
// a letra no campo, executa uma função).
if (tag == "INPUT")
return;

if (tag == "SELECT")
return;

// Detecta o codigo da tecla
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;

var character = String.fromCharCode(code);

// Executa o procedimento associado à uma letra.
if(character == "R"){
}

//Seta para cima
if(code == 38) {
...
return;
}

//Seta para direita
if(code == 39) {
...
return;
}

//Seta para esquerda
if(code == 37) {
return;
}
}


2 Comments:

Anonymous Anônimo said...

Olá, ótimo código, mas a variável character retorna "&" para a seta pra cima (IE).

[]'s

JackSSL

5/19/2010 07:00:00 PM  
Anonymous Anônimo said...

Sou principiante em JavaScript e não consegui entender seu código. Quais valores tenho que enviar para a função no lugar de "e"??

Poderia enviar para mim, se você tiver, um código mais simples, ou este mais detalhado??

Agradeço
Marco Sousa
marcosousad@gmail.com

7/17/2011 06:28:00 PM  

Postar um comentário

Links to this post:

Criar um link

<< Home