键控和键下不同步
keyup and keydown are not synchronized?
本文关键字:同步 更新时间:2023-09-26
我正在尝试构建一个复杂的所见即所得,为此我想在按下某些键后创建一些操作。
为此,我添加了 jquery keypress
,并在带有div 的div 上keyup
contenteditable
侦听器。我的一个动作对 HTML 进行了一些更改,在此更改之后,我的光标位置应保持不变。
我的问题是,当我处理keyup
事件时,keyup
和keydown
之间没有关系。
不应在时间关系中触发keyup
事件。
如果你在下面的例子中开始写作,你可以看到keydown
和keyup
之间没有顺序。
,则应在 B 的事件之后触发 A 的"键"。
var result = document.getElementById('div-result');
function log(msg) {
result.innerHTML = result.innerHTML + '<br>' + msg;
}
$('#div-editable').keydown(function(e) {
log('down: ' + e.keyCode);
});
$('#div-editable').keyup(function(e) {
log('up: ' + e.keyCode);
});
log('Iniciando log...');
div#div-editable {
background: #F2F2F2;
padding: 10px;
border: solid 1px #333333;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<div id="div-editable" contenteditable>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
<div id="div-result"></div>
无法同步这些方法。换句话说,当我处理keyup
时,keydown
应该等待。
keyup
和keydown
字面意思就是这样。我可以按住 a,按 b,然后放开 a。
下:b,键上:a。
你必须能够处理这些"失序"的事件。
也许您希望保留一些有关当前正在按下哪些键的状态信息,以便您可以忽略任何重复事件,直到按下它。 例如,
var result = document.getElementById('div-result');
var pressed_keys = {};
function log(msg) {
result.innerHTML = result.innerHTML + '<br>' + msg;
}
$('#div-editable').keydown(function(e) {
if (pressed_keys[e.keyCode]) {
// Currently pressed, ignore.
return;
}
// Mark key as pressed.
pressed_keys[e.keyCode] = true;
log('down: ' + e.keyCode);
});
$('#div-editable').keyup(function(e) {
log('up: ' + e.keyCode);
// Mark key has depressed.
pressed_keys[e.keyCode] = false;
});
log('Iniciando log...');
相关文章:
- 在控制器和数据对象之间同步数据
- 同步调用,直到用户通过angular验证为访问者
- javascript函数同步
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 显示具有服务器端自动时间注销的同步倒计时计时器
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- 音频和动画在javasctipt循环中同步
- 主线程上的同步XMLHttpRequest已弃用
- 主干网.与Safari同步问题
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- 是否同步加载了LINK元素
- 异步获取数据使用JavaScript同步获取数据
- 以同步方式获取Javascript Promise的值
- ajax调用获胜't同步执行
- javascript函数中的异步与同步.(Node.js)
- 如何同步写入process.stdout
- JavaScript 函数同步执行
- HTML5应用程序数据库同步
- Node.js和同步API函数
- strongloop script.js run find in before delete方法:如何同步运行异步方法