我需要这个聊天框。当用户按回车键时,我想触发一个回调(发送消息并清理输入字段)
到目前为止,我得到了这个,但打字变慢了:
$('#chat_input').keydown(function(event) {
if(event.keyCode == '13') {
// do something
}
});
你会如何优化它?
更新:这不是一个巨大的减速,但我能感受到它。我很确定这段代码是负责任的。我一直有这个问题,所以我认为现在是时候找到一种不同的方式了。
答案 0 :(得分:3)
不,你的代码在这里不是有罪的。由于您正在构建聊天系统,因此您还必须运行其他脚本。但这是另一种研究问题的方法。
制作迷你表格
<form name="chatline" ... >
<input type="text" />
<input type="submit" />
</form>
然后捕获表单的提交事件,该事件将在浏览器自动输入时触发
$("form").submit(function() {
//there you go, you caught your enter
});
答案 1 :(得分:0)
我会试试这个:
document.onkeydown = function(event) {
if(event.keyCode == '13') {
// do something
return false;
}
};
这会将事件侦听器置于DOM图的顶部,为其提供第一次响应的机会。返回 false 还会告诉浏览器该事件已被处理。这将阻止它“询问”有关该事件的其他元素。放弃jQuery并直接管理事件将避免执行比需要更多的JS。
如果这很慢,我不得不认为其他地方的逻辑会减慢速度。如果这是聊天,则在聊天正文中添加/重新排列DOM元素会导致显着的浏览器开销。您应该尝试每隔几秒左右使用 setInterval 来触发'enter'逻辑。尝试输入(它会随机发送消息),但如果你仍然遇到减速,那一定是其他一些逻辑。