2

我在 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>

单击此链接查看运行示例

4

3 回答 3

1

查看更新版本

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

于 2011-01-12T12:49:07.793 回答
0

除了您正在检查的事实之外vGlobal,这闻起来像 $(document).ready() 问题。trueif (vGlobal == false)

也就是说,您应该将声明放在 document.ready() 处理程序中,如下所示:

$(document).ready(function(){
    $(window).bind("beforeunload", function(e) {
        if (vGlobal == false)
            return sMessage;
    });
});
于 2011-01-12T12:50:50.707 回答
0

使用 jQuery 将事件绑定到窗口没有任何好处——您所做的只是增加了让 jQuery 将窗口解析为 jQuery 对象的开销,而您甚至没有使用该对象。

因此,使用:

window.onbeforeunload = handler;

比使用 jQuery 绑定这个事件更可取。

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

$(document).ready(function () {
    window.onbeforeunload = handler;
};
于 2011-01-12T12:51:19.593 回答