2

asp.netアプリケーションでjqueryonbeforeunloadイベントを使用しています。以下のようにイベントを作成すると、正常に動作し、確認ダイアログボックスが表示されます。

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;
});

なぜそれが機能しないのか誰かが私に提案します。これらの2つの方法の間に違いはありますか?

aspxのコード:

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

このリンクをクリックして、実行例を確認してください

4

3 に答える 3

1

アップデート版を見る

ドキュメント準備完了イベント内のすべてのイベントをバインドする必要があります。

于 2011-01-12T12:49:07.793 に答える
0

vGlobalでありtrue、あなたがチェックしているという事実は別としてif (vGlobal == false)、これは $(document).ready() の問題のようなにおいがします。

つまり、次に示すように、宣言を 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 に答える