0

如果用户尝试关闭在登顶时激活的窗口,我正在使用“PECL uploadprogress”状态进行文件上传,同时使用“beforeunload”警告。

$('#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
    });
}

现在我需要在某处解除“前卸载”...

$(window).unbind();

... 但是哪里?$.ajax({ }).done 或 .complete 在这里不起作用,因为函数在重复。还有.ajaxStop。我需要一个“文件传输完成”事件来解除绑定。我可以使用类似的东西

if $progress_percent > 90 { unbind() }

(当文件传输完成时,表单跟随目标(动作)。页面将关闭。可能在脚本达到 100% 之前。用户在此卸载时收到警告。这就是我试图通过使用 >90 来避免的==100。)

但我不喜欢这种方式。有更好的解决方案吗?

4

1 回答 1

0

如果您使用了PHP 会话,则 JavaScript 事件将在 when $_SESSION["upload_progress_xxx"]["done"]为 true 或检测到上传错误的情况下解除绑定。

于 2013-07-27T05:56:48.920 回答