一个困饶了我一天的小问题,现在把我的调试心得给大家,希望大家以后不要走弯路
关于media player的,其实真的是小case,但是里面一个细节问题真的令人饶火。
我要做的是在播放文件的同时显示当前播放进度(时间),
以及当前播放文件的总长度(时间).
于是,我这样写:
//获取总个影片的总时间长度
function GetLength(){
return document.all.player.Duration;
}
刚开始的时候,一切都是正常的,但是,当播放的文件很大(超过200MB)的时候,
程序不正常了,因为我的程序比较复杂,跟踪了很久我才发现是GetLength()这个
函数出了问题,于是,我开始调试:
代码改为
try{
return document.all.player.Duration;
}catch(x){alert(x.message);return -1;}
居然没有任何显示。
我在别的函数里面这样调用该函数: alert(GetLength())
也没有任何显示,而且不抱错。
我开始怀疑document.all.player.Duration不能读取巨型文件的大小,可能会边界
益出之类的把。于是,我这样改
try{
var v=document.all.player.Duration;
alert(typeof(v));
alert(isNuN(v));
v++;v--;
alert(typeof(v));
alert(isNuN(v));
return v;
}catch(x){alert(x.message);return -1;}
代码居然一切正常,typeof(v) 显示 v的类型为 Number
isNaN显示为false,说明v还是一个合法的数字。
但是 alert(GetLength()) 还是不运行。。。这个函数仍然不能返回值。
最后,百般无奈的情况下,我这样改了一下:
function GetLength(){
var v=document.all.player.Duration/100;
return v*100;
}
一切OK.
问题虽然解决了,但是我还是搞不懂其中的道理,留给大家作一个参考把。