我正在使用“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
});
}
现在我需要UNBIND“beforeunload”某处......
$(window).unbind();
......但是在哪里? $ .ajax({})。done或.complete在这里不起作用,因为函数正在重复。另外.ajaxStop。我需要在“文件传输完成”中进行一个事件,以解除绑定。我可以使用像
这样的东西if $progress_percent > 90 { unbind() }
(当文件传输完成后,表单将跟随目标(操作)。页面将关闭。可能在脚本获得100%之前。用户在此卸载时收到警告。这是我试图通过使用避免的> 90而不是== 100。)
但我不喜欢这样。有更好的解决方案吗?
答案 0 :(得分:0)
如果您使用过PHP sessions,那么当$_SESSION["upload_progress_xxx"]["done"]
为真或检测到上传错误时,JavaScript事件就会被解除绑定。