我想做的是将关键代码放在一个数组中,以便以后做一些有趣的事情。因此,我捕获击键,获取插入符号位置并将键代码放入数组中(在 MooTools 的帮助下):
var keyArray = [];
$('form').addEvent('keyup', function(event) {
var pos = document.activeElement.getCaretPosition();
keyArray[pos] = event.code;
});
一般来说,这很好用。undefined
但是,在控制台中显示完整数组时,我注意到数组中有一些值。进一步探索这一点,我发现当快速打字时,插入符号的位置似乎失去了轨道,或者反应快/慢。我制作了一个 jsfiddle 来证明这一点:http: //jsfiddle.net/HQVR8/1/
如果您在此示例中快速键入,您将看到一个插入符号位置序列,如
- 1 - 2 - 3 - 5 - 6 - 6.
但是打字慢的时候
- 1 - 2 - 3 - 4 - 5 - 6.
当然,现在快速输入的问题是我的数组中有一个undefined
值,我覆盖了一个数组项。所以结果是不一样的。
我的问题是我是否可以以某种方式让插入符号位置保持跟踪。我尝试过使用“本机” selectionStart
,但结果是一样的。我还尝试在事件中捕获插入符号位置keydown
并将其放入事件中的数组中keyup
。没有不同。我想知道是否使用小暂停(即强制用户输入速度较慢)可以解决它,但这感觉就像一个黑客,我更喜欢一个“适当的”解决方案。希望有一个。