1

ステップの処理中にページを離れないように、次のスクリプトを配置します

<script language="JavaScript">
window.onbeforeunload = confirmExit;

function confirmExit()
{
JQObj.ajax({
    type: "POST",
    url: "<?php echo $this->url(array('controller'=>'question','action'=>'cleaSess'), 'default', true); ?>",
    success: function(data){}
});

return "You have attempted to leave this page.  If you have made any changes to the fields without clicking the Save button, your changes will be lost.  Are you sure you want to exit this page?";
}

</script>

しかし、カスタムアラートメッセージを設定する代わりに、デフォルトのアラートメッセージを取得するたびに、

そして、エンドユーザーが「ページを離れる」ボタンをクリックしたときにajax呼び出しを呼び出したいのですが、上記のスクリプトでは、ボタンをクリックする前にajax呼び出しが呼び出されます。

人々がページを離れた場合にのみ ajax を呼び出すアイデアやロジックは誰にでもあります。

4

2 に答える 2

2

「アンロード」イベントを使用して、AJAX リクエストを送信できます。

<script type="text/javascript">
    window.onbeforeunload = function() {
        return "You have attempted to leave this page. "
               + "If you have made any changes to the fields without "
               + "clicking the Save button, your changes will be lost. "
               + "Are you sure you want to exit this page?";
    };

    window.onunload = function() {
        // Ending up here means that the user chose to leave
        JQObj.ajax({
            type: "POST",
            url: "http://your.url.goes/here",
            success: function() {}
        });
    };
</script>

この短いデモも参照してください。

于 2013-10-21T19:02:08.753 に答える
0

あなたはこのようなことを試してみてください:

window.onbeforeunload = displayConfirm;

function displayConfirm()
{
    if (confirm("You have attempted to leave this page.  If you have made any changes to the fields without clicking the Save button, your changes will be lost.  Are you sure you want to exit this page?"))
    {
        confirmExit();
    }
}
于 2012-10-15T05:53:26.827 に答える