我尝试在Full Calendar(jQuery插件)中实现剩余通知例如:如果我在下午06:00开会,应该在开会前15或20分钟通知我。
这是我的代码,
setInterval(function(){
var month=['january','february','march','april','may','june','july','august','september','october','november','december'];
var date = new Date();
$('.remainder').html("");
var headerDate = $('.fc-center').text().split(' ');
if(headerDate[0].toLowerCase() == month[date.getMonth()] && headerDate[1] == date.getFullYear()){
console.log(1);
var allEvents = $('.fc-day-grid-event');
$.each(allEvents,function(key,value){
var eventTime = $(value).find('.fc-time').text();
if(eventTime.length !=0){
var getAmPm = eventTime.split('');
var AmPm = getAmPm[getAmPm.length-1];
var eventTimeArr = eventTime.split(':');
var eventDateIndex = $(value).closest('td').index();
var eventDate = $(value).closest('.fc-content-skeleton').find('thead td').eq(eventDateIndex).data('date');
if($(value).closest('.fc-content-skeleton').find('thead td.fc-day-number').eq(eventDateIndex).html() == date.getDate()){
if(eventTimeArr.length == 1){
eventTimeArr[0] = eventTimeArr[0].slice(0,-1);
eventTimeArr[0] = parseInt(eventTimeArr[0])
if(AmPm == 'p'){
eventTimeArr[0] = parseInt(eventTimeArr[0])+12;
}
if( Date.parse(eventDate+' '+eventTimeArr[0]+":"+eventTimeArr[1]) - date.valueOf() <= 900000 ){
$('.remainder').append( "<span>"+($(value).find('.fc-title').text())+"</span>, ");
}
}
else{
eventTimeArr[1] = eventTimeArr[1].slice(0,-1);
eventTimeArr[0] = parseInt(eventTimeArr[0])
if(AmPm == 'p'){
eventTimeArr[0] = parseInt(eventTimeArr[0])+12;
}
eventTimeArr[1] = parseInt(eventTimeArr[1]);
if( Date.parse(eventDate+' '+eventTimeArr[0]+":"+eventTimeArr[1]) - date.valueOf() <= 900000 ){
$('.remainder').append( "<span>"+($(value).find('.fc-title').text())+"</span>, ");
}
}
}
}
});
}
}, 1000);
还有我的html,
Remainder : The following task comes up in 15 mins ---- <label class="remainder"></label>
我尝试使用console.log调试它,发现每当它执行.fc-*(.fc中心、.fc日网格事件、.fc时间)时,我的代码都会被卡住
有人能帮我摆脱困境吗。如果您有任何其他解决方案来实现剩余功能,请告诉我。
假设您从数据库中获取事件,我认为在这个解决方案中我根本不会使用fullCalendar。如果用户登录到我的网站,我会每隔一分钟左右通过ajax调用查询数据库,查找在接下来的X分钟内开始的属于用户的任何事件,然后创建一个通知(如果返回)。