// 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