<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>鼠标键盘事件</title>
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport" content="width=device-width"/>
<style>
html,body{
height: 100%;
}
</style>
</head>
<body>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
//键盘事件执行回调函数
/*
*定义keyCode容器,根据需求自己添加按键
*/
window.keyCodeASCII = {
"A": 65, "B": 66, "C": 67, "D": 68, "E": 69, "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,
"F1": 112, "F2": 113, "F3": 114, "F4": 115, "F5": 116, "F6": 117, "F7": 118, "F8": 119, "F9": 120, "F10": 121, "F11": 122, "F12": 123,
"0": 48, "1": 49, "2": 50, "3": 51, "4": 52, "5": 53, "6": 54, "7": 55, "8": 56, "9": 57,
"Esc": 27,
"BackSpace": 8,
"Tab": 9,
"Enter": 13,
"Delete": 46,
"Shift": 16,
"Ctrl": 17,
"Alt": 18,
"Space": 32,
"Left": 37,
"Up": 38,
"Right": 39,
"Down": 40,
"PageUp": 33,
"PageDown": 34
};
/*
*键盘事件回调函数
*/
window.doPressKey = function (o) {
var e = event || window.event;
o.keyName = o.keyName || "Enter";
var fn = false,
str = o.keyName.split('|');
$.each(str, function (i) {
fn = fn || (e.which == keyCodeASCII[str[i]]);
});
if (e && fn) {
if (typeof o.preFun == 'function') {
o.preFun();
}
if (typeof o.sucFun == 'function') {
o.sucFun(e);
}
}
};
//鼠标点击事件
window.doClickMouse = function (obj, callback, type) {
//禁止浏览器默认事件
$(document).delegate(obj, 'contextmenu', function (e) {
e.preventDefault();
});
$(document).delegate(obj, 'mousedown', function (e) {
var $t = $(this);
var fn = type == 'left' ? e.which == 1 : e.which == 3;
if (fn) {
if (typeof callback == 'function') {
//右键执行回调函数
callback(e, $t);
}
}
});
};
$(function () {
//点击鼠标右键
doClickMouse('body', function (e, $t) {
alert('不准右键');
});
//点击鼠标左键
doClickMouse('body', function (e, $t) {
//判断是否同时按下ctrl键
if (e.ctrlKey && !e.shiftKey && !e.altKey) {
alert('你按住Ctrl+鼠标左键做什么');
}
}, 'left');
$(document).on('keydown', function (e) {
//按下Ctrl+Shift+Enter
//所有键盘事件都加上下面这三种表达式是否为真的判断,是为了避免热键冲突,测试发现不加判断会出现这种情况:比如只需要Ctrl+Enter事件,但是Ctrl+Enter与Ctr+Shift+Enter都会执行相同的回调
if (e.ctrlKey && e.shiftKey && !e.altKey) {
doPressKey({
keyName: 'Enter',
preFun: function () {
//禁止浏览器默认事件
e.preventDefault();
},
sucFun: function (e) {
alet('你同时按下了Ctrl+Shift+Enter键');
}
});
}
//按下Ctrl+C
if (e.ctrlKey && !e.shiftKey && !e.altKey) {
doPressKey({
keyName: 'A',
preFun: function () {
//禁止浏览器默认事件
e.preventDefault();
},
sucFun: function (e) {
alert('禁止全选');
}
});
doPressKey({
keyName: 'C',
preFun: function () {
//禁止浏览器默认事件
e.preventDefault();
},
sucFun: function (e) {
alert('不准复制');
}
});
doPressKey({
keyName: 'V',
preFun: function () {
//禁止浏览器默认事件
e.preventDefault();
},
sucFun: function (e) {
alert('不准粘贴');
}
});
}
//按下Up或者PageUp
if (!e.ctrlKey && !e.shiftKey && !e.altKey) {
doPressKey({
keyName: 'Up|PageUp',
preFun: function () {
e.preventDefault();
},
sucFun: function (e) {
alert('你按下了Up或者PageUp键');
}
});
}
});
});
</script>
</body>
</html>