我花了一些时间搜索,但未能找到这个问题的答案。当用户在我的网站上执行某些操作时,会正确显示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>
答案 0 :(得分:0)
我解决了这个问题。当页面刷新时,我实际上可以用不同的代码方法命中断点。此方法看到旧消息仍具有非空值,并再次将消息添加到模型,然后前端代码再次显示。为了解决这个问题,我使用了一个标志,该标志在执行应该显示消息的动作时被设置。然后我使用此标志有条件地将消息添加到模型。然后重置标志。