ユーザーがサミットでアクティブになるウィンドウを閉じようとすると、「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の。)
しかし、私はこの方法が好きではありません。より良い解決策はありますか?