我正在尝试为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';}
});
});
任何人都知道我会怎么做。到目前为止我尝试的所有东西都失败了。我试过了 使用不起作用的设定间隔功能。
答案 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时,你现在要做的就是澄清。