مدیریت کلیدهای کیبرد در جاوا اسکریپت
نویسنده: یوسف نژاد
تاریخ: ۱۳۹۱/۰۹/۱۲ ۲۳:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
<html>
<body>
<div>
Prevent default:
<input type="checkbox" id="keydownStop" value="1" />
keydown
<input type="checkbox" id="keypressStop" value="1" />
keypress
<input type="checkbox" id="keyupStop" value="1" />
keyup
</div>
Ignore:
<input type="checkbox" id="keydownIgnore" value="1" />
keydown
<input type="checkbox" id="keypressIgnore" value="1" />
keypress
<input type="checkbox" id="keyupIgnore" value="1" />
keyup
<div>
Focus on the input below and press any key.
</div>
<div>
<input type="text" style=" width: 600px" id="keyInput" />
</div>
Log:
<div>
<textarea id="keyLogger" rows="18" onfocus="this.blur()" style="width: 600px; border: 1px solid black"></textarea>
</div>
<input type="button" value="Clear" onclick="clearLog()" />
<script type="text/javascript">
document.getElementById('keyInput').onkeydown = keyHandler;
document.getElementById('keyInput').onkeyup = keyHandler;
document.getElementById('keyInput').onkeypress = keyHandler;
document.getElementById('keyInput').focus();
function keyHandler(e) {
e = e || window.event;
if (document.getElementById(e.type + 'Ignore').checked) return;
var evt = e.type;
while (evt.length < 10) evt += ' ' +
log(evt +
' keyCode=' + e.keyCode +
' which=' + e.which +
' charCode=' + e.charCode +
' char=' + String.fromCharCode(e.keyCode || e.charCode) +
(e.shiftKey ? ' +shift' : '') +
(e.ctrlKey ? ' +ctrl' : '') +
(e.altKey ? ' +alt' : '') +
(e.metaKey ? ' +meta' : ''));
if (document.getElementById(e.type + 'Stop').checked) {
e.preventDefault ? e.preventDefault() : (e.returnValue = false);
}
}
function clearLog() {
document.getElementById('keyLogger').value = '';
document.getElementById('keyInput').focus();
}
function log(text) {
var area = document.getElementById('keyLogger');
area.value += text + '\n';
area.scrollTop = area.scrollHeight;
}
</script>
</body>
</html>
<!doctype html>
document.onkeydown = function (e) {
e = e || event;
console.log(e);
}
function getCharacter(event) {
if (event.which == null)
return String.fromCharCode(event.keyCode); // IE
else if (event.which != 0 && event.charCode != 0)
return String.fromCharCode(event.which); // All others
return null; // special key
}
<html>
<body>
<input id="inputText" type="text" />
<script>
document.onkeydown = keyDown;
document.onkeypress = keyPress;
document.onkeyup = keyUp;
function keyDown(e) {
var input = document.getElementById('inputText');
input.value = 'keyDown started ...';
input.disabled = true;
var j = 0;
for (var i = 0; i < 999999999; i++) {
j = i - j;
}
console.log(j);
//alert('keyDown');
input.value = 'keyDown finished.';
input.disabled = false;
}
function keyPress(e) {
alert('keyPress');
//console.log('keyPress');
} function keyUp(e) {
alert('keyUp');
//console.log('keyUp');
}
</script>
</body>
</html>
<html>
<head>
<script type="text/javascript">
function process() {
var above = 0, below = 0;
for (var i = 0; i < 200000; i++) {
if (Math.random() * 2 > 1) {
above++;
}
else {
below++;
}
}
}
function test() {
var result1 = document.getElementById('log');
var start = new Date().getTime();
console.log('start');
for (var i = 0; i < 200; i++) {
result1.value = 'time=' + (new Date().getTime() - start) + ' [i=' + i + ']';
process();
}
result1.value = 'time=' + (new Date().getTime() - start) + ' [done]';
console.log('end');
}
window.onload = test;
</script>
</head>
<body>
<input id='log' />
</body>
</html>
<input onkeydown="return false" /> <input onkeypress="return false" />
document.getElementById('myInputText').onkeypress = function (e) {
var char = getCharacter(e || window.event);
if (!char) return; // special key
this.value += char.toUpperCase();
return false; // برای اینکه کاراکتر اضافی نمایش داده نشود
}
e ? e : window.event;
document.getElementById('numberInputText').onkeypress = function (e) {
e = e || window.event;
var chr = getCharacter(e);
if (!isNumeric(chr) && chr !== null) return false;
}
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
function isNumber(val) {
return val !== "NaN" && (+val) + '' === val + ''
}
0==false // true 0===false // false, because they are of a different type 1=="1" // true, auto type coercion 1==="1" // false, because they are of a different type
e.ctrlKey && e.keyCode == 'A'.charCodeAt(0)
<html>
<body>
<div id="dotnettips" style="width: 35px; height: 35px; background-image: url(https://www.dntips.ir/favicon.ico);
position: absolute; left: 10px; top: 10px;" tabindex="0">
</div>
<script>
document.getElementById('dotnettips').onkeydown = function (e) {
e = e || event;
switch (e.keyCode) {
case 37: // left
this.style.left = parseInt(this.style.left) - this.offsetWidth + 'px';
return false;
case 38: // up
this.style.top = parseInt(this.style.top) - this.offsetHeight + 'px';
return false;
case 39: // right
this.style.left = parseInt(this.style.left) + this.offsetWidth + 'px';
return false;
case 40: // down
this.style.top = parseInt(this.style.top) + this.offsetHeight + 'px';
return false;
}
}
</script>
</body>
</html>
<html>
<body>
<input id="inputText" type="text" />
<div id="divCapsLock" style="color: Red; display: none;">Caps Lock is ON!</div>
<script>
var capsLock = null;
document.onkeypress = keyPress;
document.onkeydown = keyDown;
function keyDown(e) {
e = e || event;
capsLock = (e.keyCode == 20 && capsLock !== null) ? !capsLock : capsLock;
document.getElementById('divCapsLock').style.display = capsLock ? 'block' : 'none';
}
function keyPress(e) {
if (capsLock != null) return;
e = e || window.event;
var charCode = e.charCode || e.keyCode;
capsLock = (charCode >= 97 && charCode <= 122 && e.shiftKey) || (charCode >= 65 && charCode <= 90 && !e.shiftKey);
document.getElementById('divCapsLock').style.display = capsLock ? 'block' : 'none';
}
</script>
</body>
</html>
<html>
<body>
<div id='divInput'>
<input id="inputText" type="text" />
</div>
<script>
document.getElementById('inputText').onkeydown = inputKeyDown;
document.getElementById('divInput').onkeydown = divKeyDown;
document.onkeydown = documentKeyDown;
window.onkeydown = windowKeyDown;
function divKeyDown(e) {
console.log('divKeyDown');
}
function inputKeyDown(e) {
console.log('inputKeyDown');
}
function documentKeyDown(e) {
console.log('documentKeyDown');
}
function windowKeyDown(e) {
console.log('windowKeyDown');
}
</script>
</body>
</html>
<html>
<body>
<input id="inputText" type="text" />
<div id="divCapsLock" style="color: Red; display: none;">Caps Lock is ON!</div>
<script>
var capsLock = null;
var hasFocus = false;
document.onkeyup = keyUp;
document.onkeypress = keyPress;
document.getElementById('inputText').onfocus = focus;
document.getElementById('inputText').onblur = focus;
function warnCapsLock() {
document.getElementById('divCapsLock').style.display = (capsLock != null && capsLock && hasFocus) ? 'block' : 'none';
}
function focus() {
hasFocus = !hasFocus;
warnCapsLock();
}
function keyUp(e) {
e = e || event;
capsLock = (e.keyCode == 20 && capsLock !== null) ? !capsLock : capsLock;
warnCapsLock();
}
function keyPress(e) {
if (capsLock != null) return;
e = e || window.event;
var charCode = e.charCode || e.keyCode;
capsLock = (charCode >= 97 && charCode <= 122 && e.shiftKey) || (charCode >= 65 && charCode <= 90 && !e.shiftKey);
warnCapsLock();
}
</script>
</body>
</html>
window.onblur = function () { capsLock = null; }
var Client = {};
Client.Keyboard = {};
Client.Keyboard.EnableKeyDown = true;
Client.Keyboard.EnableKeyUp = false;
Client.Keyboard.CurrentKeyEvent = null;
window.onkeydown = function (event) {
if (!Client.Keyboard.EnableKeyDown) return true;
return KeyboardEvents(event);
};
window.onkeyup = function (event) {
if (!Client.Keyboard.EnableKeyUp) return true;
return KeyboardEvents(event);
};
function Rise(event) {
var e = Client.Keyboard.CurrentKeyEvent;
if (event) {
var data = { shift: e.shiftKey, ctrl: e.ctrlKey, alt: e.altKey };
if (!event(data)) return false;
return event(data);
}
return true;
}
function KeyboardEvents(e) {
e = e || window.event;
Client.Keyboard.CurrentKeyEvent = e;
switch (e.keyCode) {
case 8:
return Rise(Client.Keyboard.Backspace);
case 9:
return Rise(Client.Keyboard.Tab);
case 13:
return Rise(Client.Keyboard.Enter);
case 16:
return Rise(Client.Keyboard.Shift);
case 17:
return Rise(Client.Keyboard.Ctrl);
case 18:
return Rise(Client.Keyboard.Alt);
case 19:
return Rise(Client.Keyboard.Pause);
case 20:
return Rise(Client.Keyboard.CapsLock);
case 27:
return Rise(Client.Keyboard.Esc);
case 33:
return Rise(Client.Keyboard.PageUp);
case 34:
return Rise(Client.Keyboard.PageDown);
case 35:
return Rise(Client.Keyboard.End);
case 36:
return Rise(Client.Keyboard.Home);
case 37:
return Rise(Client.Keyboard.Left);
case 38:
return Rise(Client.Keyboard.Up);
case 39:
return Rise(Client.Keyboard.Right);
case 40:
return Rise(Client.Keyboard.Down);
case 44:
return Rise(Client.Keyboard.PrtScr);
case 45:
return Rise(Client.Keyboard.Insert);
case 46:
return Rise(Client.Keyboard.Delete);
//////////////////////////////////////////////////////////////////////////////////////////////////
case 48:
return Rise(Client.Keyboard.Num0);
case 49:
return Rise(Client.Keyboard.Num1);
case 50:
return Rise(Client.Keyboard.Num2);
case 51:
return Rise(Client.Keyboard.Num3);
case 52:
return Rise(Client.Keyboard.Num4);
case 53:
return Rise(Client.Keyboard.Num5);
case 54:
return Rise(Client.Keyboard.Num6);
case 55:
return Rise(Client.Keyboard.Num7);
case 56:
return Rise(Client.Keyboard.Num8);
case 57:
return Rise(Client.Keyboard.Num9);
//////////////////////////////////////////////////////////////////////////////////////////////////
case 65:
return Rise(Client.Keyboard.A);
case 66:
return Rise(Client.Keyboard.B);
case 67:
return Rise(Client.Keyboard.C);
case 68:
return Rise(Client.Keyboard.D);
case 69:
return Rise(Client.Keyboard.E);
case 70:
return Rise(Client.Keyboard.F);
case 71:
return Rise(Client.Keyboard.G);
case 72:
return Rise(Client.Keyboard.H);
case 73:
return Rise(Client.Keyboard.I);
case 74:
return Rise(Client.Keyboard.J);
case 75:
return Rise(Client.Keyboard.K);
case 76:
return Rise(Client.Keyboard.L);
case 77:
return Rise(Client.Keyboard.M);
case 78:
return Rise(Client.Keyboard.N);
case 79:
return Rise(Client.Keyboard.O);
case 80:
return Rise(Client.Keyboard.P);
case 81:
return Rise(Client.Keyboard.Q);
case 82:
return Rise(Client.Keyboard.R);
case 83:
return Rise(Client.Keyboard.S);
case 84:
return Rise(Client.Keyboard.T);
case 85:
return Rise(Client.Keyboard.U);
case 86:
return Rise(Client.Keyboard.V);
case 87:
return Rise(Client.Keyboard.W);
case 88:
return Rise(Client.Keyboard.X);
case 89:
return Rise(Client.Keyboard.Y);
case 90:
return Rise(Client.Keyboard.Z);
////////////////////////////////////////////////////////////////////////////
case 91:
//case 219: // opera
return Rise(Client.Keyboard.LeftWindow);
case 92:
return Rise(Client.Keyboard.RightWindow);
case 93:
return Rise(Client.Keyboard.ContextMenu);
////////////////////////////////////////////////////////////////////////////
case 96:
return Rise(Client.Keyboard.NumPad0);
case 97:
return Rise(Client.Keyboard.NumPad1);
case 98:
return Rise(Client.Keyboard.NumPad2);
case 99:
return Rise(Client.Keyboard.NumPad3);
case 100:
return Rise(Client.Keyboard.NumPad4);
case 101:
return Rise(Client.Keyboard.NumPad5);
case 102:
return Rise(Client.Keyboard.NumPad6);
case 103:
return Rise(Client.Keyboard.NumPad7);
case 104:
return Rise(Client.Keyboard.NumPad8);
case 105:
return Rise(Client.Keyboard.NumPad9);
////////////////////////////////////////////////////////////////////////////
case 106:
return Rise(Client.Keyboard.Multiply);
case 107:
return Rise(Client.Keyboard.Add);
case 109:
return Rise(Client.Keyboard.Subtract);
case 110:
return Rise(Client.Keyboard.DecimalPoint);
case 111:
return Rise(Client.Keyboard.Divide);
////////////////////////////////////////////////////////////////////////////
case 112:
return Rise(Client.Keyboard.F1);
case 113:
return Rise(Client.Keyboard.F2);
case 114:
return Rise(Client.Keyboard.F3);
case 115:
return Rise(Client.Keyboard.F4);
case 116:
return Rise(Client.Keyboard.F5);
case 117:
return Rise(Client.Keyboard.F6);
case 118:
return Rise(Client.Keyboard.F7);
case 119:
return Rise(Client.Keyboard.F8);
case 120:
return Rise(Client.Keyboard.F9);
case 121:
return Rise(Client.Keyboard.F10);
case 122:
return Rise(Client.Keyboard.F11);
case 123:
return Rise(Client.Keyboard.F12);
////////////////////////////////////////////////////////////////////////////
case 144:
return Rise(Client.Keyboard.NumLock);
case 145:
return Rise(Client.Keyboard.ScrollLock);
case 186:
case 59: // opera & firefox
return Rise(Client.Keyboard.SemiColon);
case 187:
case 61: // opera
//case 107: //firefox
return Rise(Client.Keyboard.Equal);
case 188:
return Rise(Client.Keyboard.Camma);
case 189:
return Rise(Client.Keyboard.Dash);
case 190:
return Rise(Client.Keyboard.Period);
case 191:
return Rise(Client.Keyboard.Slash);
case 192:
return Rise(Client.Keyboard.GraveAccent);
case 219:
return Rise(Client.Keyboard.OpenBracket);
case 220:
return Rise(Client.Keyboard.BackSlash);
case 221:
return Rise(Client.Keyboard.CloseBracket);
case 222:
return Rise(Client.Keyboard.SingleQuote);
}
};
// ctrl + s
Client.Keyboard.S = function (e) {
if (e.ctrl) {
// انجام عملیات موردنظر
}
return true;
}
e.preventDefault() e.stopPropagation()
<html>
<body>
<div onclick="document.body.appendChild(outter)" style='border:solid 1px'>
Outer Div
<a id="inner" href="index2.htm">index2</a>
</div>
<script>
var outter = document.createElement('div');
outter.innerText = 'outter';
var inner = document.createElement('div');
inner.innerText = 'inner';
document.getElementById('inner').onclick = function(e) {
e = e || window.event;
document.body.appendChild(inner);
//e.preventDefault();
//e.stopPropagation();
//e.returnValue = false;
return false;
};
</script>
</body>
</html>