是否有可能必須使用兩個按鍵,例如,它會累積每個按鍵的按下時間,例如左鍵和右鍵,所以每次點擊其中一個鍵時他們會累積按下的時間,如果再次按下相同的按鍵,它會增加時間,因此最後每個按鍵都會按下總時間。計算按鍵在鍵盤上按下的時間長度
這怎麼辦?
是否有可能必須使用兩個按鍵,例如,它會累積每個按鍵的按下時間,例如左鍵和右鍵,所以每次點擊其中一個鍵時他們會累積按下的時間,如果再次按下相同的按鍵,它會增加時間,因此最後每個按鍵都會按下總時間。計算按鍵在鍵盤上按下的時間長度
這怎麼辦?
取決於平臺上的相當多。但事件驅動的平臺如果將事件關鍵和關鍵事件視爲事件(大多數情況下包括.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];
};
})();
嗨,謝謝你的回答,請你看看這個,它是我在這個網站上發現的唯一一個,所以它應該是在相同的概念,除了我想獲得每個關鍵的累計和總時間按下,所以你必須看到按下同一個按鍵時累計的時間,例如按鍵37顯示按下了多長時間的總時間。請幫助http://jsfiddle.net/EeXVX/ – Nina 2012-04-27 17:25:04
只需持續時間,並將其添加到該密鑰的運行總數。像'totalTime [e.which] + =持續時間;'。 – cHao 2012-04-27 17:38:08
你能否複製粘貼它給我,非常感謝var output = document.getElementById('output'), pressed = {}; window.onkeydown = function(e){ if(pressed [e.which])return; 按[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 +'was'for'+ duration +'seconds
'; 按[e.which] = 0; }; – Nina 2012-04-27 17:45:52
在什麼語言?很難回答這種問題,但沒有說明您使用的語言或環境。 – DangerMonkey 2012-04-27 17:07:35