我正在尝试为my chat box创建通知,当有人给你发新消息时,可以在“talk”标题旁边看到。我试过很多方法,但都不起作用。
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';}
});
});
有没有人知道我会怎么做。到目前为止,我所尝试的一切都失败了。我尝试使用设置的间隔函数,但不起作用。
发布于 2012-09-19 18:54:11
那么,如果我理解正确的话,提交一条消息会将其附加到log.html的末尾吗?我不认为这会对你想要做的事情起作用。你需要有一个服务来跟踪新的帖子,这样你就可以检查更新,而不仅仅是重新加载div的innerHTML。
一旦你有了它,你就可以统计自从聊天获得焦点以来你加载了多少条新消息,并在每次聊天获得焦点时将其重置为0。
您可以使用document.title更新标题。因此,当您需要更新计数时,您可以这样做
document.title = 'my normal title (' + newCount + ')';
简单地说,这不是一个你可以用javascript解决的问题,你需要重新设计你的应用程序。
发布于 2012-09-19 19:34:14
你的问题有点不完整/不清楚。当你说“每当有人给你发新消息”时,你的意思是当一条新消息出现时(对你来说不是必须的,而是整个聊天室都需要)。
假设是这种情况,那么每当有人输入一些东西时,这个数字就会继续增加,这就引出了一个问题:你什么时候减少这个数字?
这里有一段代码可以帮助你入门。它不会减少通知编号,因为在您的问题中,您没有澄清该编号何时重置。
在$(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。
https://stackoverflow.com/questions/12500990
复制