在回发之前停止用户离开(Javascript / ASP.NET)

时间:2011-03-13 21:52:25

标签: javascript asp.net

我在回发上运行了几个函数,可能需要一些时间才能完成。

启动回发后,我会使用以下代码显示加载图片:

function showLoader()
{
    document.getElementById("<%=loadingImage.ClientID%>").style.visibility="visible";
}

我希望能够为此功能添加代码,因此如果用户在此时尝试离开,则会通知他们操作未完成。

我找到了这段代码:

function goodbye(e) {
    if(!e) e = window.event;
    //e.cancelBubble is supported by IE - this will kill the bubbling process.
    e.cancelBubble = true;
    e.returnValue = 'You sure you want to leave?'; //This is displayed on the dialog
    //e.stopPropagation works in Firefox.
    if (e.stopPropagation) {
        e.stopPropagation();
        e.preventDefault();
    }
}
window.onbeforeunload=goodbye;

这有效但我只希望在加载图像处于活动状态时激活代码。

我尝试了以下操作,但在页面最终回发时显示警告消息:

function goodbye(e) {
    if(!e) e = window.event;
    //e.cancelBubble is supported by IE - this will kill the bubbling process.
    e.cancelBubble = true;
    e.returnValue = 'You sure you want to leave?'; //This is displayed on the dialog
    //e.stopPropagation works in Firefox.
    if (e.stopPropagation) {
        e.stopPropagation();
        e.preventDefault();
    }
}
function showLoader()
{
    document.getElementById("<%=loadingImage.ClientID%>").style.visibility="visible";
    window.onbeforeunload=goodbye;
}

我有什么想法可以调整这个只是在用户离开页面时显示而不是在回发完成时显示?

1 个答案:

答案 0 :(得分:1)

表单提交后,您需要将window.onbeforeunload设置为null。所以,基本上:

<form onsubmit="window.onbeforeunload=null">

要动态地在所有表单上应用此功能,我建议为此编写一个window.onload函数,无需编辑所有页面上的每个表单。