在Javascript

时间:2017-02-28 14:25:49

标签: javascript

我正在学习javascript,同时尝试创建一个简单的脚本,允许您使用键盘在Web浏览器上键入外语。

因此,当您键入a时,会有一个字母映射到a,因此会出现单个字符Դ,但会出现这样的字符,你必须输入两次,因为这种语言的字符多于英文字母。

所以,问题在于最后一个角色。通常情况下,我必须在一秒的范围内连续输入gh以生成字母,但我在等待检查是否有问题为了显示那个字母,在两个字符内输入了两个字符。

所以,我不认为时间间隔功能是解决这个问题的方法,但我也看不到任何其他方法。

4 个答案:

答案 0 :(得分:1)

就像Alex提到的那样,对于每次按下,只需将new Date().getTime();存储在变量中,这将为您提供最新的UTC时间。 UTC时间以毫秒为单位,因此在下一次按键时,只需查看当前时间和存储时间是否相差1000!

答案 1 :(得分:1)

以下是测量任意2个事件之间经过时间的示例代码。 我添加了setTimeout只是为了给你一个例子。

var startTime = Date.now();

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

答案 2 :(得分:1)

警告:检查键是否在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>

答案 3 :(得分:1)

关于你的问题的另一个答案,也许这是你真正的答案。

&#13;
&#13;
 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(' --- '));
    });
&#13;
<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>
&#13;
&#13;
&#13;