4,510,976 th visitor since 2017.2.1 ( Today : 1543 )
Programming
No. 501
Name. swindler
Subject. Explorer, Firefox, javascript 키보드 제어
Main Cate. Javascript
Sub Cate.
Date. 2008-11-19 10:06
Hit. 3697 (210.182.190.136)
File.
요즘 파폭으로 홈피에 접속하다보니
안 되는 기능 몇개가 참 불편하다.
그중에 단축키 기능을 수정했음...



Put the following code in a .js file and include it in your html page:
var Keys = {
BACKSPACE: 8, TAB: 9, ENTER: 13, SHIFT: 16,
CTRL: 17, ALT: 18, PAUSE: 19, CAPS: 20,
ESC: 27, PAGEUP: 33, PAGEDN: 34, END: 35,
HOME: 36, LEFT: 37, UP: 38, RIGHT: 39,
DOWN: 40, INSERT: 45, DELETE: 46,
n0: 48, n1: 49, n2: 50, n3: 51, n4: 52,
n5: 53, n6: 54, n7: 55, n8: 56, n9: 57,
A:65, B:66, C:67, D:68, E:68, F:70, G:71, H:72, I:73, J:74, K:75,
L:76, M:77, N:78, O:79, P:80, Q:81, R:82, S:83, T:84, U:85, V:86,
W:87, X:88, Y:89, Z:90,
WINLEFT: 91, WINRIGHT: 92, SELECT: 93, NUM0: 96,
NUM1: 97, NUM2: 98, NUM3: 99, NUM4: 100,
NUM5: 101, NUM6: 102, NUM7: 103, NUM8: 104,
NUM9: 105, MULTIPLY: 106, ADD: 107, SUBTRACT: 109,
DECIMAL: 110, DIVIDE: 111, F1: 112, F2: 113,
F3: 114, F4: 115, F5: 116, F6: 117,
F7: 118, F8: 119, F9: 120, F10: 121,
F11: 122, F12: 123, NUMLOCK: 144, SCROLLLOCK: 145,
SEMICOLON: 186, EQUAL: 187, COMMA: 188, DASH: 189,
PERIOD: 190, FORWARDSLASH: 191, GRAVEACCENT: 192,
OPENBRACKET: 219, BACKSLASH: 220, CLOSEBRACKET: 221,
QUOTE: 222
};

function KeyPressEvent(eventObj)
{
this.eventHandler = null; //the event handler
this.eventElement = null; //the element that caused the event
this.elementTag = ""; //the html tag that caused the event
this.elementID = ""; //the id of the element
this.element = null; //the actual element
this.keyCode = 0; //the keycode to capture

if( document.all )
{
// IE
this.eventHandler = eventObj;
this.eventElement = eventObj.srcElement;
this.elementTag = eventObj.srcElement.tagName;
this.elementID = eventObj.srcElement.name;
this.element = eventObj.srcElement;
this.keyCode = eventObj.keyCode;
}
else
{
// Not IE
this.eventHandler = eventObj;
this.eventElement = eventObj.target.srcElement;
this.elementTag = eventObj.target.tagName;
this.elementID = eventObj.target.name;
this.element = eventObj.target;
this.keyCode = eventObj.which;

// Safari bug workaround
if (this.element.nodeType == 3)
targ = targ.parentNode;
}
}

function KeyHandler()
{
//register for the event
if ( document.addEventListener )
document.addEventListener("keydown", this.keyDown.bind(this), false);
else if ( document.attachEvent )
document.attachEvent("onkeydown", this.keyDown.bind(this));
else
document.onkeydown = this.keyDown.bind(this);

if (document.layers) document.captureEvents(Event.KEYDOWN);

if ( document.addEventListener )
document.addEventListener("keyup", this.keyUp.bind(this), false);
else if ( document.attachEvent )
document.attachEvent("onkeyup", this.keyUp.bind(this));
else
document.onkeyup = this.keyUp.bind(this);

if (document.layers) document.captureEvents(Event.KEYUP);
}

KeyHandler.prototype.keyDown = function(e)
{
if ( typeof(this.onKeyDown) != "undefined" )
{
if ( !e ) e = window.event;
var r = this.onKeyDown( new KeyPressEvent(e) );

if ( r == false )
{
if ( window.event ) window.event.cancelBubble = true;
if ( window.event ) window.event.returnValue = false;
if ( e.preventDefault ) e.preventDefault();
return false;
}
else
{
if ( window.event ) window.event.cancelBubble = false;
if ( window.event ) window.event.returnValue = true;
return true;
}
}
else
{
alert("No Key Press Event Handler Found!");
}
};

KeyHandler.prototype.keyUp = function(e)
{
if ( typeof(this.onKeyUp) != "undefined" )
{
if ( !e ) e = window.event;
var r = this.onKeyUp( new KeyPressEvent(e) );

if ( r == false )
{
if ( window.event ) window.event.cancelBubble = true;
if ( window.event ) window.event.returnValue = false;
if ( e.preventDefault ) e.preventDefault();
if ( e.stopPropagation ) e.stopPropagation();
return false;
}
else
{
if ( window.event ) window.event.cancelBubble = false;
if ( window.event ) window.event.returnValue = true;
return true;
}
}
else
{
alert("No Key Press Event Handler Found!");
}
};


Useage:

var kh = new KeyHandler();
kh.onKeyDown = function(e) // e is a KeyPressEvent object
{
if ( e.eventElement == document.getElementById("textbox1") && e.keyCode == 45 )
return false; //cancel the press

//more information available from e
e.eventHandler //the event handler
e.eventElement //the element that caused the event
e.elementTag //the html tag that caused the event
e.elementID //the id of the element
e.element //the actual element
e.keyCode //the keycode to capture

return true;
}

kh.onKeyUp = function()
{
//do nothing
return true;
}





[바로가기 링크] : http://coolx.net/cboard/develop/501



Name
Password
Comment
Copyright © 1999-2017, swindler. All rights reserved. 367,611 visitor ( 1999.1.8-2004.5.26 ), 2,405,771 ( -2017.01.31)

  2HLAB   2HLAB_Blog   RedToolBox   Omil   Omil_Blog