事件
Web前端开发QQ群 110939958-业余程序员
以前总结过各个浏览器中键盘事件的触发情况,可以看出keydown, keyup是比较靠谱的
因为它们是系统提供的比较底层的事件,对应的是键码keyCode标识了哪个键被按下(并不知道输入的是哪个字符)
keypress事件能够给出输入的可打印字符,但是这个事件在各个浏览器和操作系统中存在着很多不兼容性
在火狐中,在keypress中event.charCode保存了键入字符的ASCLL码,而其它的浏览器可以使用keyCode,
要想获得这个字符可以使用String.fromCharCode()
阻止默认行为
用户的键入是可以用js来阻止的,相关代码对应为IE的 returnValue=false;和标准浏览器的preventDefault();
实际中遇到的情况:
除了Opera,在keydown的时候阻止时就可以取消键入的事件
而Opera中需要在keypress的时候阻止。
遇到这样的需求,双击按键的事件
还是直接上代码吧:
//首先准备好常规的事件绑定函数
function addEvent(element, name, callback) {
//标准浏览器
if(element.addEventListener) element.addEventListener(name, callback, false);
//IE
else element.attachEvent("on" + name, callback);
}
//双击按键绑定函数
function addDblPressEvent(element, callback) {
var presstime = 2;//次数为2
addEvent(element, "keyup", press);
//每次单击触发
function press(e) {
presstime--;
setTimeout(reset, 300);
if(presstime === 0) fire(e);
}
//恢复计数器
function reset() {
presstime++;
}
//触发双击
function fire(e) {
callback.call(element, e);
}
}
//试一下
window.onload = function() {
addDblPressEvent(document, function(e) {
console.log("double clicked");
});
}