首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在<title></title>中从聊天框创建新消息通知

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

Stack Overflow用户
提问于 2012-09-20 02:48:34
回答 2查看 1.8K关注 0票数 1

我正在尝试为my chat box创建通知,当有人给你发新消息时,可以在“talk”标题旁边看到。我试过很多方法,但都不起作用。

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

以下是我的代码

代码语言:javascript
代码运行次数:0
运行
复制
$(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';}
  });
});

有没有人知道我会怎么做。到目前为止,我所尝试的一切都失败了。我尝试使用设置的间隔函数,但不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-20 02:54:11

那么,如果我理解正确的话,提交一条消息会将其附加到log.html的末尾吗?我不认为这会对你想要做的事情起作用。你需要有一个服务来跟踪新的帖子,这样你就可以检查更新,而不仅仅是重新加载div的innerHTML。

一旦你有了它,你就可以统计自从聊天获得焦点以来你加载了多少条新消息,并在每次聊天获得焦点时将其重置为0。

您可以使用document.title更新标题。因此,当您需要更新计数时,您可以这样做

代码语言:javascript
代码运行次数:0
运行
复制
document.title = 'my normal title (' + newCount + ')';

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

票数 0
EN

Stack Overflow用户

发布于 2012-09-20 03:34:14

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

假设是这种情况,那么每当有人输入一些东西时,这个数字就会继续增加,这就引出了一个问题:你什么时候减少这个数字?

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

$(document).ready中,在末尾添加以下行

代码语言:javascript
代码运行次数:0
运行
复制
// 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以接受回调:

代码语言:javascript
代码运行次数:0
运行
复制
function loadLog(callback){
  ...
  success: function(html){
    if (callback) callback();
    ...
  }
  ...
}          

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

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

代码语言:javascript
代码运行次数:0
运行
复制
newMessagesCount = $('.msgln').length - lastReadMessageCount;
document.title = newMessagesCount > 0 ? 'title (' newMessagesCount ')' : 'title';

就这样!你现在要做的就是弄清楚你想什么时候更新lastReadMessageCount。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12500990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档