Monday, March 19th, 2007

Cross Browser Keyboard Handler

Category: Browsers, JavaScript, Library

Santosh Rajan has struggled with keyboard handling across browsers.

His article discusses some of the pain, and he came up with a simple wrapper to help out:

document.onkeydown = function(e) {handleKeys(e)}
document.onkeypress = function(e) {handleKeys(e)}
var nonChar = false;

function handleKeys(e) {
var char;
var evt = (e) ? e : window.event; //IE reports window.event not arg
if (evt.type == “keydown”) {
char = evt.keycode;
if (char < 16 || // non printables (char > 16 && char < 32) || // avoid shift (char > 32 && char < 41) || // navigation keys char == 46) { // Delete Key (Add to these if you need) handleNonChar(char); // function to handle non Characters nonChar = true; } else nonChar = false; } else { // This is keypress if (nonChar) return; // Already Handled on keydown char = (evt.charCode) ? evt.charCode : evt.keyCode; if (char > 31 && char < 256) // safari and opera handleChar(char); // } if (e) // Non IE Event.stop(evt); // Using prototype else if (evt.keyCode == 8) // Catch IE backspace evt.returnValue = false; // and stop it! } [/javascript]

Failure when receiving data from the peer

Posted by Dion Almaer at 6:37 am
4 Comments

+++--
3.9 rating from 35 votes

4 Comments »

Comments feed TrackBack URI

That’s pretty handy without the need to download a whole framework just for keyboard detection.

It’ll be useful later on when we add Ajax to our product.

Liming
Jumptree Project management
http://www.jumptree.com

Comment by Liming Xu — March 19, 2007

I have created a function to handle Keyboard shortcuts. My approach completely abstracts the handling – you just have to specify the key combination and the function to be called when that combination is pressed – Handling Keyboard Shortcuts in JavaScript

Comment by Binny V A — March 21, 2007

Great solution, I look forward to trying it. Thanks.

Comment by SlackAlice — September 13, 2007

I have just tried this wrapper and it is simple and very effective, I would cetrainly recommend giving it a try.

Comment by The Chauffeur — September 29, 2007

Leave a comment

You must be logged in to post a comment.