4

Internet Explorer では正常に動作するが、Firefox では動作しない次のコードを使用しています。

ユーザーがブラウザを閉じると、データベースのビット フィールドを更新する webmethod を呼び出す必要がIsLogin=falseあります。

window.onbeforeunload = function (e) {

        var evt = window.event || e;
        var y = evt.clientY || evt.pageY;

        if (y < 0 || evt.clientX<0) {
            $.ajax({
                type: "POST",
                url: "/Application/WebForm1.aspx/Update",
                async: false,
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    alert('Sucessfull Call');
                }

            });
        }
    }
4

1 に答える 1

0

FireFox で Web メソッドがまったく呼び出されていませんか? HTML5 仕様では、window.onbeforeunload イベントの間、alert() の呼び出しは無視される可能性があると規定されています。Mozilla の応答については、こちらを参照してください。

別の方法は、確認ボックスを返すことです。これは、IE/FF/Chrome でうまく機能するようです。ドキュメントは引き続き表示され、必要に応じてイベントをキャンセルできます。

<script type="text/javascript">

    window.addEventListener("beforeunload", function (e) {
        var confirmationMessage = "Sucessfull Call";

        (e || window.event).returnValue = confirmationMessage;
        return confirmationMessage;
    });
</script>
于 2013-06-06T16:24:29.540 に答える