如何在刷新页面时阻止jGrowl消息再次显示?

时间:2013-01-23 15:52:25

标签: jquery 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 个答案:

答案 0 :(得分:0)

我解决了这个问题。当页面刷新时,我实际上可以用不同的代码方法命中断点。此方法看到旧消息仍具有非空值,并再次将消息添加到模型,然后前端代码再次显示。为了解决这个问题,我使用了一个标志,该标志在执行应该显示消息的动作时被设置。然后我使用此标志有条件地将消息添加到模型。然后重置标志。