在聊天框中的<title> </title>中创建新的消息通知

时间:2012-09-19 18:48:34

标签: javascript jquery

我正在尝试为my chat box创建通知,就像“谈话”标题旁边看到的那样,当你发布一条新消息时。我尝试了多种从不起作用的东西。

a busy cat http://goawaymom.com/damit.png

这是我的代码

$(document).ready(function(){
  //If user submits the form
  $("#submitmsg").click(function(){ 
    var clientmsg = $("#usermsg").val();
    $.post("post.php", {text: clientmsg});              
    $("#usermsg").attr("value", "");
    return false;
  });

  //Load the file containing the chat log
  function loadLog(){       
    $.ajax({
      url: "log.html",
      cache: false,
      success: function(html){     
        var chatbox= $("#chatbox");
        var atBottom = (chatbox[0].scrollHeight - chatbox.scrollTop() == chatbox.outerHeight());
        chatbox.html(html);

        if (atBottom )
          chatbox.animate({ scrollTop: 99999 }, 'normal');
      }
    });
  }
  setInterval (loadLog, 2500);  //Reload file every 2.5 seconds

  //If user wants to end session
  $("#exit").click(function(){
    var exit = confirm("Are you sure you want to end the session?");
    if(exit==true){window.location = 'index.php?logout=true';}
  });
});

任何人都知道我会怎么做。到目前为止我尝试的所有东西都失败了。我试过了 使用不起作用的设定间隔功能。

2 个答案:

答案 0 :(得分:0)

因此,如果我理解正确,提交邮件会将其附加到log.html的末尾吗?我不认为这会为你正在尝试做的事情而努力。您需要有一个服务来跟踪新帖子,以便您可以检查更新,而不仅仅是重新加载div的innerHTML。

一旦你有了这个,你可以计算自聊天聚焦以来你加载了多少新邮件,并在每次聊天获得焦点时将其重置为0.

您可以使用document.title更新标题。因此,无论何时需要更新计数,都可以

document.title = 'my normal title (' + newCount + ')';

简单地说,这不是一个你可以用javascript解决的问题,你需要重新设计你的应用程序。

答案 1 :(得分:0)

你的问题有点不完整/不清楚。当你说“每当有人给你发新消息”时,你的意思是什么时候出现一条新消息(对你来说不是必需的,而是整个聊天室的消息)。

假设情况就是如此,那么每当有人输入某些东西时,这个数字就会不断增加,这会导致一个问题:你什么时候减少这个数字呢?

这是一段可以帮助您入门的代码。它不会减少通知编号,因为在您的问题中,您没有说明该编号何时重置。

$(document).ready中添加以下行

// Load log and cache number of message on page when it first loaded
// Pass in a callback function to cache the message count. 
loadLog(function(){
  window.lastReadMessageCount = $('.msgln').length;
}); 

更新loadLog以接收回调:

function loadLog(callback){
  ...
  success: function(html){
    if (callback) callback();
    ...
  }
  ...
}          

现在您知道用户在加载页面时看到了多少消息。现在,每当页面更新聊天时,我们都希望更新新的消息计数。

loadLog()中,将以下行添加到结尾

newMessagesCount = $('.msgln').length - lastReadMessageCount;
document.title = newMessagesCount > 0 ? 'title (' newMessagesCount ')' : 'title';

就是这样!当你想要更新lastReadMessageCount时,你现在要做的就是澄清。