Как предотвратить повторное отображение сообщения 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 ответ

Я решил проблему. Когда страница обновляется, я на самом деле могу достичь точки останова в другом методе кода. Этот метод видит, что старое сообщение все еще имеет ненулевое значение, и снова добавляет сообщение в модель, которое затем снова отображает код переднего плана. Чтобы исправить это, я использую флаг, который устанавливается при выполнении действия, которое должно отображать сообщение. Затем я использую этот флаг для условного добавления сообщения в модель. Затем флаг сбрасывается.

Другие вопросы по тегам