// Repaints the progress bar's filled-in amount based on the % of time elapsed for current video.
progressBar.change(function () {
var currentTime = $(this).val();
var totalTime = parseInt($(this).prop('max'), 10);
// Don't divide by 0.
var fill = totalTime !== 0 ? currentTime / totalTime : 0;
// EDIT: Added this check, testing with it now.
if (fill < 0 || fill > 1) throw "Wow this really should not have been " + fill;
var backgroundImage = '-webkit-gradient(linear,left top, right top, from(#ccc), color-stop(' + fill + ',#ccc), color-stop(' + fill + ',rgba(0,0,0,0)), to(rgba(0,0,0,0)))';
$(this).css('background-image', backgroundImage);
});
随着时间的推移,我正在使用上面的 javascript 填充进度条,以使用渐变修改其背景图像。
极其间歇性地——背景图像完全停止渲染。我已经在这段代码中记录了日志,一切似乎都在正常触发。我没有除以 0,我的填充也不是 0,但背景图像停止显示。
如果我重新加载 dom 元素——它又开始工作了!所以,我想知道我是否只是在这里做错了什么。也许我不能像这样连续几个小时设置背景图像?
编辑:我将尝试制作一个简短的视频剪辑,其中包含一些日志记录以突出该问题。我可能需要一点时间来重现。
我在代码中设置了一个断点,观察到 fill 的值大于 0 小于 1。在这个例子中,它的值是 0.6925
在代码中放置一个断点,在该点上中断,然后允许继续执行导致进度条的填充重新出现!
EDIT2:这是它发生的视频: http: //screencast.com/t/DvzBr06f