我的聊天脚本完全由PHP,MySQL和一些JavaScripts完成。
在聊天窗口(由2帧组成)中,第1个显示用户消息,第2个是文本输入区域。
帧与功能target
连接。
echo "< frame name=\"chatviewpage\" src=\"$chatviewurl\" scrolling=\"no\">";
echo "< frame name=\"chattextpage\" target=\"chatviewpage\" src=\"$chattexturl\" scrolling=\"no\">";
因此,当用户发送消息时,它会自动显示在chatview
帧中。在chattextpage
中,我已经使用了onkeypress
功能,因此如果用户点击“输入”,则会发送消息。
现在,我想添加让用户知道他的好友何时输入消息的功能。我在上一个问题上找到了我需要的脚本,但我无法弄清楚如何集成它。
脚本如下:
<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 at the moment.";
}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 at the moment.</div>
我希望它得到很好的解释,有人可以帮忙吗?
答案 0 :(得分:0)
按下某个键时:
检查是否有现有的计时器
如果有的话,请停止 启动计时器。
当计时器到期时,请调用服务器方法。
var searchTimeout;
document.getElementById('searchBox').onkeypress = function () {
if (searchTimeout != undefined) clearTimeout(searchTimeout);
searchTimeout = setTimeout(callServerScript, 250);
};
function callServerScript() {
// your code here
}
答案 1 :(得分:0)
基本上这样做是将变量设置为true或false,具体取决于此人是否正在按键或向上键入:
//setup before functions
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
$('textarea').on('change',function(){
delay(function(){
//make your server call here
},2000);
});