Как предотвратить повторное отображение сообщения jGrowl при обновлении страницы?
Я провел некоторое время в поисках, но так и не смог найти ответ на этот вопрос. Когда пользователь выполняет какое-либо действие на моем сайте, правильно отображается сообщение jGrowl. Однако если пользователь затем обновляет страницу, сообщение неожиданно отображается снова. Также, когда пользователь уходит со страницы и затем нажимает кнопку "Назад" в браузере, неожиданно отображается сообщение jGrowl.
Я установил точку останова в коде, и она срабатывает только в первый раз, когда ожидается отображение сообщения jGrowl. Обновление страницы не приводит к достижению точки останова.
Так как же мне предотвратить это неожиданное поведение? Спасибо за ваше время.
Я думаю, что это проблема, для решения которой понадобится многим людям.
<#escape x as x?js_string>
$(function(){
$("a[name=preview]").fancybox({type:'ajax'});
// We use jGrowl for the popups that appear in the corner
$.jGrowl.defaults.closer = false;
<#if confirmMessage??>
$("#jgrowlcontainer").jGrowl("${springMacroRequestContext.getMessage(confirmMessage)}");
</#if>
// Delete a program
$('#deleteProgram').click(function(){
$.fancybox.open('<p>Are you sure you want to delete this program?</p>'+
'<button id="deleteProgram">DELETE</button> <button id="deleteCancel">CANCEL</button>');
return false;
});
$("body").on("click","button#deleteCancel",function(){
$.fancybox.close();
});
$("body").on("click","button#deleteProgram",function(){
$.fancybox.close();
$('form').attr('action','/build/deleteProgram.html').submit();
return false;
});
});
</#escape>
1 ответ
Я решил проблему. Когда страница обновляется, я на самом деле могу достичь точки останова в другом методе кода. Этот метод видит, что старое сообщение все еще имеет ненулевое значение, и снова добавляет сообщение в модель, которое затем снова отображает код переднего плана. Чтобы исправить это, я использую флаг, который устанавливается при выполнении действия, которое должно отображать сообщение. Затем я использую этот флаг для условного добавления сообщения в модель. Затем флаг сбрасывается.