onbeforeunload事件需要Jquery帮助

时间:2011-01-12 12:42:51

标签: asp.net jquery onbeforeunload

我在asp.net应用程序中使用jquery onbeforeunload事件。 如果我按下面给出的那样编写事件,那么它的工作正常并显示确认对话框。

var vGlobal = true;
var sMessage = "Leaving the page will lost in unsaved data!";

[工作]

> window.onbeforeunload = function() {
>   if (vGlobal == false) return
> sMessage; }

但如果我使用下面给出的绑定方法

,它就无法正常工作

[不工作]

$(window).bind("beforeunload", function(e) {
    if (vGlobal == false)
        return sMessage;
});

有人建议我为什么不工作。这两种方法之间有什么区别。

aspx上的代码:

<asp:TextBox ID="txtName" runat="server"></asp:TextBox>

CLICK ON THIS LINK TO SEE RUNNING EXAMPLE

3 个答案:

答案 0 :(得分:1)

请参阅updated version

您需要绑定文档就绪事件中的所有事件。

答案 1 :(得分:0)

除了vGlobaltrue并且您正在检查if (vGlobal == false)这一事实之外,这有点像$(document).ready()问题。

即。你应该将声明放在document.ready()处理程序中,如下所示:

$(document).ready(function(){
    $(window).bind("beforeunload", function(e) {
        if (vGlobal == false)
            return sMessage;
    });
});

答案 2 :(得分:0)

使用jQuery将事件绑定到窗口没有任何好处 - 你所做的就是增加让jQuery将窗口解析为jQuery对象的开销,你甚至不使用它。

因此,使用:

window.onbeforeunload = handler;

最好使用jQuery绑定此事件。

您仍然可以在文档就绪部分内执行绑定:

$(document).ready(function () {
    window.onbeforeunload = handler;
};