Javascript 计算键盘上按键的按下时间
例如,是否可能必须使用两个键,它将累积每个键的按下时间,例如左键和右键,因此每次单击其中一个键时,它将累积按下时间,如果再次按下同一个键,它将添加时间,以便在最后获得每个键的按下总时间Javascript 计算键盘上按键的按下时间,javascript,keyboard,Javascript,Keyboard,例如,是否可能必须使用两个键,它将累积每个键的按下时间,例如左键和右键,因此每次单击其中一个键时,它将累积按下时间,如果再次按下同一个键,它将添加时间,以便在最后获得每个键的按下总时间 如何做到这一点?很大程度上取决于平台。但是,如果事件驱动平台将向下键和向上键视为事件(大多数都是这样,包括.net、java和Windows),那么它们就有点容易了 只需聆听按键关闭事件,并记录它发生的时间。当您为同一个键获得一个键启动事件时,只需从录制的时间中减去它发生的时间。两者之间的差异将是该按键的持续时间
如何做到这一点?很大程度上取决于平台。但是,如果事件驱动平台将向下键和向上键视为事件(大多数都是这样,包括.net、java和Windows),那么它们就有点容易了 只需聆听按键关闭事件,并记录它发生的时间。当您为同一个键获得一个键启动事件时,只需从录制的时间中减去它发生的时间。两者之间的差异将是该按键的持续时间 关键是,根据您的平台处理重复按键的方式,您可能会在获得一个按键之前,为同一个按键获得多个按键。只记录每个键的第一个键(当然,自最后一个键启动或应用程序启动后)。由于您一次可以按多个键,如果您想正确执行此操作,您将能够记住多个键的键关闭时间 如果您想跟踪总时间,则将在向上键上找到的时间差添加到该键的运行总时间中 在JS中:
(function() {
var output = document.getElementById('output'),
totalTime = {},
pressed = {};
window.onkeydown = function(e) {
if (e.which in pressed) return;
pressed[e.which] = e.timeStamp;
};
window.onkeyup = function(e) {
if (!(e.which in pressed)) return;
var duration = ( e.timeStamp - pressed[e.which] ) / 1000;
if (!(e.which in totalTime)) totalTime[e.which] = 0;
totalTime[e.which] += duration;
output.innerHTML +=
'<p>Key ' + e.which + ' was pressed for ' +
duration + ' seconds this time' +
'(' + totalTime[e.which] + ' total)</p>';
delete pressed[e.which];
};
})();
(函数(){
var output=document.getElementById('output'),
totalTime={},
按下={};
window.onkeydown=函数(e){
如果(如按下)返回;
按下[e.which]=e.timeStamp;
};
window.onkeyup=函数(e){
如果(!(e.按下哪个按钮))返回;
var duration=(e.timeStamp-按下[e.which])/1000;
如果(!(e.which in totalTime))totalTime[e.which]=0;
总时间[e.which]+=持续时间;
output.innerHTML+=
“键”+e.按下哪个+”+
持续时间+“本次为秒”+
“('+totalTime[e.which]+'total)”;
删除按下的[e.which];
};
})();
使用哪种语言?这类问题很难在没有语言或环境指示的情况下回答。嗨,谢谢你的回答,请你看看这个,这是我在这个网站上找到的唯一一个,所以它应该是在同一个概念上,除了我想得到每个按键的累计时间和总时间,因此,当按下同一个键时,您必须看到累积的时间,例如,键37显示按下该键的总时间。请帮我记下持续时间
,并将其添加到该密钥的运行总数中。比如totalTime[e.which]+=duration代码>。你能帮我复制并粘贴它吗,非常感谢var output=document.getElementById('output'),按={};window.onkeydown=函数(e){if(按下[e.which])返回;按下[e.which]=e.timeStamp;};window.onkeyup=function(e){if(!pressed[e.which])return;var duration=(e.timeStamp-pressed[e.which])/1000;output.innerHTML+='Key'+e.which+'被按下'+duration+'秒';按下[e.which]=0;};非常感谢你的回答,我很感激。如果有人能把它做得更好一点,一个键只显示一行,这样会更整洁,而不是显示同一个键的列表