2012-02-04 25 views
-1

だから私はユーザーがTキーを押し下げてからキーが離されるまでの時間を見つけようとしています。私はどこにでも見てきましたが、私はまだ実用的な解決策を見いだしていません。さまざまなソリューションは数字を返しますが、正しい数字は返しません。ここに私のjavascriptです:キーダウンとキーアップの間の時間

私は= "KeyDownイベント(イベント)" onkeyupの= "keyUpイベント(イベント)"

、代わりのkeydownとからkeyup間のミリ秒を返すのをonKeyDownメソッドと与えているbodyタグで

var ky; 
var start; 
var end; 

function keydown(e){ 
    ky = e.keyCode; 
    if(ky==84){ 
     start = +new Date(); 
    } 
} 

function keyup(e){ 
    ky = e.keyCode; 
    if(ky==84){ 
     end = +new Date(); 
     alert(end - start); 
    } 
} 

私は約20と200の間の数字です。それはそれがそれの一部ではない他の多くのコードを含んでいるので、あなたは全体のコードを実際に与えることができません

+2

そう...あなたはどこでも、実際のイベントを処理していますか? – Ryan

+2

しかし正しいものはありません。 < - どうやって間違っていると確信していますか? – TimWolla

+0

キーの上下を処理する方法を理解するときは、キーを押したまま任意の数の他のキーを押して放すことができます。 – kennebec

答えて

1

私はあなたが、しかし、オートリピート時間(通常は約500ms)より長くキーを押し続けると、オートリピートがタイミングを乱している可能性があります。あなたは仕事の周りにできるオートリピートコードで次のように:

var start = 0; 
function processKeyDown(e) { 
    if (!start) { 
     start = (new Date()).getTime(); 
    } 
} 

function processKeyUp(e) { 
    var delta = (new Date()).getTime() - start; 
    document.getElementById("time").innerHTML = delta + " ms"; 
    start = 0; 
} 

あなたはそれはここで働いて見ることができます:http://jsfiddle.net/jfriend00/AveZP/

+0

これは、GNU/Linux上のOpera 12(およびそれ以前のバージョン)では動作しないことに注意してください。 –

関連する問題