簡體   English   中英

檢測兩次按下Java腳本之間的時間間隔

[英]Detect time lapse between two key press in Javascript

我正在學習javascript,同時嘗試創建一個簡單的腳本,該腳本允許您使用鍵盤在Web瀏覽器中鍵入外語。

所以,當你鍵入a例如,有映射到一個單個字母,所以單個字符Դ會出現,然而,為了使人物像出現,你必須輸入兩次,因為這種語言比英語更多的字符字母。

因此,問題在於最后一個字符。 通常,我必須在一秒鍾的時間范圍內連續鍵入gh才能生成字母,但是我在等待檢查是否彼此之間在一秒鍾內鍵入兩個字符以顯示該字母時遇到問題。

因此,我認為時間間隔函數不是解決此問題的方法,但是我也看不到任何其他方法。

就像Alex提到的那樣,每按一次,都只需存儲new Date().getTime(); 在變量中,它將為您提供最新的UTC時間。 UTC時間以毫秒為單位,因此在下一次按鍵時,只需查看當前時間和存儲的時間是否相差1000即可!

下面是示例代碼,用於測量任意兩個事件之間經過的時間。 我添加了setTimeout只是為了給您一個示例。

 var startTime = Date.now(); setTimeout(function(){ var elapsedTime = Date.now() - startTime; console.log('elapsedTime ='+elapsedTime); }, 100); 

注意事項:檢查keydown()中的鍵是否向上並通知keydown keypress()中的鍵是否已向上鍵;

  var start = null; $('#in').keydown(function (e) { if (!start) {//checking is a new user input start = $.now(); } }).keyup(function (e) { var timeElapsed = $.now() - start; start = null;//start the next timing tracking console.log(['time elapsed:', timeElapsed, 'ms'].join(' ')); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <label> <h2>please input some letter to test</h2> <input id="in"/> </label> 

關於您問題的另一個答案,也許這是您真正的答案。

  function duration(timestamps) { var last = timestamps.pop(); var durations = []; while (timestamps.length) { durations.push(last - (last = timestamps.pop())); } return durations.reverse(); } function display(mills) { if (mills > 1000) return (mills / 1000) + ' s'; return mills + ' ms'; } var durations = []; $('#in').keydown(function (e) { durations.push($.now()); }).keyup(function (e) { var current = durations; current.push($.now()); durations = []; var timeElapsed = current[current.length - 1] - current[0]; console.log([ ['time elapsed:', display(timeElapsed)].join(' '), ['keys duration:', duration(current).map(display)].join(' ') ].join(' --- ')); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <label> <h2>Please input something to test!</h2> <input id="in"/> </label> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM