检测网站的其他用户何时输入

时间:2013-10-12 22:48:55

标签: javascript php jquery mysql

我的聊天脚本完全由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>

我希望它得到很好的解释,有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

按下某个键时:

  1. 检查是否有现有的计时器

  2. 如果有的话,请停止 启动计时器。

  3. 当计时器到期时,请调用服务器方法。

        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);
});