0

我有一个完全用 PHP、MySQL 和一些 JavaScript 编写的聊天脚本。

在聊天窗口(由 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>

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

4

2 回答 2

0

当一个键被按下时:

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

  2. 如果有一个启动计时器,请停止它。

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

    var searchTimeout;
    document.getElementById('searchBox').onkeypress = function () {
        if (searchTimeout != undefined) clearTimeout(searchTimeout);
        searchTimeout = setTimeout(callServerScript, 250);
    };
    function callServerScript() {
        // your code here
    }
于 2013-10-12T22:55:01.103 回答
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);
});
于 2013-10-12T22:56:16.927 回答