1

我需要这个作为聊天框。当用户按下回车时,我想触发一个回调(发送消息并清理输入字段)

到目前为止,我得到了这个,但是打字变慢了:

$('#chat_input').keydown(function(event) {
  if(event.keyCode == '13') {
    // do something
  }
});

你会如何优化这个?

更新:这不是一个巨大的减速,但我能感觉到。我很确定这段代码是负责任的。我一直有这个问题,所以我想如果可能的话,是时候找到一种不同的方法了。

4

2 回答 2

3

不,您的代码在这里不是有罪的。由于您正在构建聊天系统,因此您还必须运行其他脚本。但这里有另一种方式来研究这个问题。

制作迷你表格

<form name="chatline" ... >
   <input type="text" />
   <input type="submit" />
</form>

然后捕捉表单的提交事件,该事件会在浏览器进入时自动触发

$("form").submit(function() {
    //there you go, you caught your enter
});
于 2012-04-05T23:37:51.323 回答
0

我会试试这个:

document.onkeydown = function(event) {
  if(event.keyCode == '13') {
    // do something
    return false;
  }
};

这将事件侦听器置于 DOM 图的顶部,使其第一次有机会响应。返回false还会告诉浏览器该事件已被处理。这将防止它“询问”有关事件的其他元素。此外,放弃 jQuery 并直接管理事件将避免执行比需要更多的 JS。

如果这仍然很慢,我不得不认为其他地方的逻辑会减慢它的速度。如果这是一个聊天,在聊天正文中添加/重新排列 DOM 元素可能会导致显着的浏览器开销。您应该尝试使用setInterval每隔几秒左右触发一次“输入”逻辑。尝试打字(它会随机发送消息),但如果您仍然遇到速度变慢,那一定是其他一些逻辑。

于 2012-04-05T23:55:11.920 回答