Ale*_*ovs 8 javascript events keypress javascript-events
所以,想象一下这段代码:
if (navigator.appName == "Opera")
document.onkeypress = function (e) { console.log(e.keyCode); };
else
document.onkeydown = function (e) { console.log(e.keyCode); };
Run Code Online (Sandbox Code Playgroud)
我猜,它的作用非常明显.问题是,如果长时间按住键,它会被注册很多次.在我的应用程序中,这是一个问题,因为它使我的应用程序做了很多不必要的计算.有可能以某种方式只获得一次按键,但有关键持有多长时间的信息?
谢谢.
Šim*_*das 12
干得好:
var pressed = {};
window.onkeydown = function(e) {
if ( pressed[e.which] ) return;
pressed[e.which] = e.timeStamp;
};
window.onkeyup = function(e) {
if ( !pressed[e.which] ) return;
var duration = ( e.timeStamp - pressed[e.which] ) / 1000;
// Key "e.which" was pressed for "duration" seconds
pressed[e.which] = 0;
};
Run Code Online (Sandbox Code Playgroud)
现场演示: http ://jsfiddle.net/EeXVX/1/show/
(删除URL的"show /"部分以查看演示代码)
因此,您有一个pressed对象,用于监视当前正在按下哪些键以及按下它们的时间点(及时).
在keyup处理程序中,确定是否按下了键,如果是,则通过减去keyup/keydown事件的时间戳来计算持续时间.
| 归档时间: |
|
| 查看次数: |
3383 次 |
| 最近记录: |