我的聊天脚本:
initChat: function () {
var cont = $('#chats');
var list = $('.chats', cont);
var form = $('.chat-form', cont);
var input = $('input', form);
var btn = $('.btn', form);
$('.scroller', cont).slimScroll({
scrollTo: list.height()
});
var handleClick = function (e) {
e.preventDefault();
var text = input.val();
if (text.length == 0) {
return;
}
var contains = text.match(/(@Tim marshall:|@Mark Smyth:)/i) === null ? "left" : "right";
sender;
if(contains === 'right'){
var sender = 'Private message from: <a href="#" class="name">Bob Nilson</a> <br />';
}else{
var sender = '<a href="#" class="name">Bob Nilson</a> ';
};
var time = new Date();
var time_str = time.toString('MMM dd, yyyy hh:mm:ss');
var tpl = '';
tpl += '<li class="' + contains + '">';
tpl += '<img class="avatar" alt="" src="../../assets/admin/layout/img/avatar1.jpg"/>';
tpl += '<div class="message">';
tpl += '<span class="arrow"></span>';
tpl += sender;
tpl += '<span class="datetime">at ' + time_str + '</span>';
tpl += '<span class="body">';
tpl += text.toString().replace(/</g, "<").replace(/>/g, ">").replace(/'/g, "'").replace(/"/g, """);
tpl += '</span>';
tpl += '</div>';
tpl += '</li>';
var msg = list.append(tpl);
input.val("");
$('.scroller', cont).slimScroll({
scrollTo: list.height()
});
}
/*
$('.scroller', cont).slimScroll({
scrollTo: list.height()
});
*/
$('body').on('click', '.message .name', function (e) {
e.preventDefault(); // prevent click event
var name = $(this).text(); // get clicked user's full name
input.val('@' + name + ':'); // set it into the input field
Metronic.scrollTo(input); // scroll to input if needed
});
btn.click(handleClick);
input.keypress(function (e) {
if (e.which == 13) {
handleClick();
return false; //<---- Add this line
}
});
},
此脚本部分从index.js中的第484行开始。你可以和我的员工聊聊here。
发送消息后,您会看到以下内容:
Bob Nilson在2014年6月27日星期五21:30:45 GMT + 0100(GMT日光时间)
测试消息
我要做的是显示自发送邮件以来的动态时间。根据我的理解,我相信我需要编辑理论:
var time = new Date();
var time_str = time.toString('MMM dd, yyyy hh:mm:ss');
是一个时间戳,然后以某种方式显示所有我的.datetime类。同样的Facebook,我想有一些时间从10800(3小时秒)到14400(4小时秒)来说'大约四小时前'。
我怎样才能达到这样的目标?
答案 0 :(得分:0)
首先,您需要能够轻松地重绘它。如果你每帧/周期重新绘制标签,那么你没事。
因此,您可以为发布的每条评论存储时间戳,或者您可以使用上次发布评论的时间存储全局变量。
然后,既然您知道当前时间,那么您可以找到自上次评论以来的时间,然后对每个案例使用if / then语句:
timeDiff = currentTime - lastTimeStamp;
label = "";
if (timeDiff < 600){
label = "A moment ago"
}
else if (timeDiff < 1200){
label = "1 minute ago"
}
//and so on
然后使用label
变量显示您想要的消息
或者,您可以创建地图或平行数组以将timeDiff
映射到label
,然后循环遍历每个数据,直到您获得匹配为止。
编辑:要获取lastTimeStamp
变量,您可以将其全局存储并在每次发布帖子时更新它,或者您可以每帧/周期循环遍历每个数据点以每次动态获取它时间。全局变量的想法是有利的,因为它不需要那么多的处理能力。循环思想是有利的,因为它不需要你每次发布帖子时都更新全局变量。
所以,要做循环的想法:假设你有一个名为posts
的帖子数组,填充了Post
类型的对象,每个Post
对象都有一个timeStamp
变量,你可以这样循环:
var lastTimeStamp = 0;
for (var i = 0; i < posts.length; i++){
if (posts[i].timeStamp > lastTimeStamp){
lastTimeStamp = posts[i].timeStamp;
}
}
所以,这就是你如何获得lastTimeStamp
变量的方法。当然,根据您的变量名称和/或Posts