У меня есть следующий код, который извлекает json-данные с страницы ASP.NET и отображает их как уведомления. Код также примет к сведению то, что было вытащено, и сохранить его в массиве, чтобы он не показывался снова в том же сеансе.beforeClose не работает в jGrowl?
Теперь я пытаюсь реализовать функциональность, так что когда пользователь закрывает сообщение, его идентификатор записывается в файл cookie, чтобы он никогда не показывался снова. Чтобы сделать это, я пытаюсь писать в файл cookie, когда запускается событие beforeClose.
Все остальное отлично работает от сохранения до кука-файла. Что-то не так с моим кодом, что мне не хватает?
var alreadyGrowled = new Array();
var noteCookie = $.cookie("notificationsViewed");
if (noteCookie != null) { alreadyGrowled = noteCookie.split(","); }
function growlCheckNew() {
$.getJSON('getNotifications.aspx', function(data) {
$(data).each(function(entryIndex, entry) {
var newMessage = true;
$(alreadyGrowled).each(function(index, msg_id) {
if (entry['ID'] == msg_id) {
newMessage = false;
}
});
if (newMessage == true) {
$.jGrowl(entry['Message'], {
sticky: true,
header: entry['Title'],
beforeClose: function(e, m) {
$.cookie("notificationsViewed", entry['ID']);
}
});
}
alreadyGrowled.push(entry['ID']);
});
});
}
Спасибо за вашу помощь, к сожалению, похоже, что это не сработало, поскольку я все еще получаю те же два уведомления при обновлении страницы. Отладка в FireBug показывает, что массив содержит два идентификатора уведомлений, но переменная noteCookie имеет значение null. – sparkymark75
Просто попробовал образец 5 на сайте авторов (http://stanlemon.net/projects/jgrowl.html), и я заметил, что если вы позволяете автоматическому закрытию уведомления, событие beforeClose, похоже, срабатывает. Если вы закрываете его вручную с помощью опции x, событие не срабатывает! – sparkymark75