0

ユーザーがサミットでアクティブになるウィンドウを閉じようとすると、「beforeunload」警告を使用しながら、「PECL uploadprogress」ステータスでファイルのアップロードを行っています。

$('#form').click(function() {
    $('#upload').submit();
    ajaxd();    
    setInterval("ajaxd()",1000);

    (...)

    $(window).bind("beforeunload", function() {
    /*  return true || confirm("Do you really want to close?"); */
        return confirm("Do you really want to close?"); 
    }); 
}

function ajaxd() {
$.ajax({
    dataType: "json",
    (...) // get and workaround progress for upload-bar
    });
}

今、どこかで「beforeunload」をアンバインドする必要があります...

$(window).unbind();

... しかしここで?$.ajax({ }).done または .complete は、関数が繰り返されるため、ここでは機能しません。また、.ajaxStop。バインドを解除するには、「ファイル転送完了」のイベントが必要です。次のようなものを使用できます

if $progress_percent > 90 { unbind() }

(ファイル転送が完了すると、フォームはターゲット (アクション) に従います。ページは閉じます。おそらく、スクリプトが 100% になる前に、ユーザーはこのアンロード時に警告を受け取ります。代わりに >90 を使用して回避しようとしています) ==100の。)

しかし、私はこの方法が好きではありません。より良い解決策はありますか?

4

1 に答える 1

0

PHP セッションを使用していた場合、$_SESSION["upload_progress_xxx"]["done"]が true の場合、またはアップロード エラーが検出された場合、JavaScript イベントはバインドされていません 。

于 2013-07-27T05:56:48.920 に答える