我正在尝试在使用PHP + MySQL/Ajax编写的聊天中添加“用户正在输入”功能。
它应该如何工作:
- 当我的聊天伙伴X开始输入时,我会在我的聊天框中看到:“X正在输入”
- 当我(名为Y)正在输入时,他会在他的聊天框中看到:“Y正在输入”(就像雅虎通一样)。
我尝试过的代码:
<script type="text/javascript" language="javascript">
var timer = 0;
function reduceTimer() {
timer = timer - 1;
isTyping(true);
}
function isTyping(val) {
if (val == 'true') {
document.getElementById('typing_on').innerHTML = "User is typing...";
} else {
if (timer <= 0) {
document.getElementById('typing_on').innerHTML = "No one is typing -blank space.";
} else {
setTimeout("reduceTimer();", 500);
}
}
}
</script>
<label>
<textarea onkeypress="isTyping('true'); timer=5;" onkeyup="isTyping('false')" name="textarea" id="textarea" cols="45" rows="5"></textarea>
</label>
<div id="typing_on">No one is typing -blank speace.</div>
问题:
如果我停顿几秒钟来思考我的拼写,它看起来就像我停止了打字。有没有更相关且不那么复杂的方法来设置此功能?是否有可能用以下代码:
- 文本框不为空(用户按下任意键开始输入)-> 消息:用户正在输入。
- 文本框为空 -> 消息:用户未输入。
- 文本框不为空,但用户已经超过5秒钟没有按键 -> 消息:用户未在输入。
它对自己显示我正在输入;如何实现或在哪里实现以便在聊天框中看到“X用户正在输入”,而不是“我正在输入”。同样对于其他用户,他应该收到关于我正在/未正在输入的消息,而不是关于他自己。
谢谢。