我漫长而持久的网站即将完成。在查看一些测试时,我注意到我的uploadify 在除firefox 之外的所有浏览器上都运行良好,而且这只发生在MAC 机器上的firefox 上。这很奇怪,但文件实际上上传得很好,只是加载进度条百分比没有增加并保持在 0 直到脚本实际完成。请见鬼。所有浏览器的代码都是相同的,甚至可以在 IE 8 中运行。很奇怪,我在所有浏览器、pc 和 mac 上都试过了。
更新:
我仍然煞费苦心地试图让它发挥作用。我使用了 onUploadProgress 回调函数
'onUploadProgress' : function(file, bytesUploaded, bytesTotal, totalBytesUploaded, totalBytesTotal) {
if(bytesUploaded > 10){
var test = "";
}
$('#progress').html(totalBytesUploaded + ' bytes uploaded of ' + totalBytesTotal + ' bytes.');
}
我试着看看它是否被调用。除了 bytesUploaded = 0 之外,我永远无法在调试器中调用它。由于某种原因,onUploadProgress 在此进度期间未启动。文件上传正常,但没有显示进度,这对用户来说是个问题。
我还试图深入研究 uploadify.js 文件的内部工作原理,以找出它在哪里进行上传过程,并且发生了同样的事情。下面是发生这种情况的代码。
function g(x,C,z){
var v=new Date();
var D=v.getTime();
var A=D-j.timer;
j.timer=D;
var y=C-j.bytesLoaded;
j.bytesLoaded=C;
var u=j.queue.queueBytesUploaded+C;
if(C > 100){
var TEST = "";
}
var F=Math.round(C/z*100);
var B=0;var w=(y/1024)/(A/1000);
w=Math.floor(w*10)/10;
if(j.queue.averageSpeed>0){
j.queue.averageSpeed=(j.queue.averageSpeed+w)/2
}else{
j.queue.averageSpeed=w
}
if(w>1000){
B=(w*0.001);
j.queue.averageSpeed=B
}
var E="KB/s";
if(B>0){
E="MB/s"
}
if(a.inArray("onUploadProgress",j.settings.skipDefault)<0){
if(j.settings.progressData=="percentage"){
a("#"+x.id).find(".data").html(" - "+F+"%")
}
else{
if(j.settings.progressData=="speed"){
a("#"+x.id).find(".data").html(" - "+F+E)
}
}
a("#"+x.id).find(".uploadifyProgressBar").css("width",F+"%")
}
if(j.settings.onUploadProgress){
j.settings.onUploadProgress(x,C,z,u,j.queue.uploadSize)
}
}
我试图在设置变量 F 的位置附近放置断点。该函数仅在为 0 时在调试器内调用,我认为可能是因为到那时文件已经上传,但也尝试在代码中放入 if 语句,仅当上传的字节数大于 100 时才停止调试器,即没那么多,但似乎由于某种原因,在启动 0 字节后它没有被调用。
我没有在控制台中看到与 uploadify 相关的任何错误。请见鬼!!