私はが常ににならないJavasript関数を持っています。この関数はjQuery.bindの下にあり、jQuery.bindはページのビデオプレーヤーに添付されています。ビデオプレーヤーが準備完了したら、機能を実行する必要があります。機能のいくつかの要素は、ビデオプレーヤーの準備ができて初めて取得できるビデオの期間に依存します。Javascript関数が要素の準備完了後に常に読み込まれない
時間の大部分はうまくいくようですが、時には(3/10倍)うまくいきません。なぜこれが起こっているのか分かりません。
ML = (typeof ML === "undefined") ? {} : ML;
ML.player = null;
//Initialization of the video player
jQuery(document).ready(function() {
var vidId = vidIdRaw.split("/");
ML.player = new SV.Player({
videoId: vidId[0]
});
//More functions are initialized under the document.ready
//Waits for video player to be ready before executing function
//This is the function that doesn't always run
ML.player.bind('ready', function(obj) {
var isReady = true;
jQuery('#duration-time').html(formatTime(ML.player.getDuration()));
//Functions initialized above are called and run here as well.
}
}
多くの機能が残っていますが、多くのコードが含まれています。私は関連情報を含めました。
jQueryでどのようにイベントが発生するのか分かりませんが、私が見ることのできるコードに基づいて、ドキュメントが準備完了する前にプレーヤーが準備ができていると思います。あなたのplayerがdocument.ready関数で準備ができているかどうかをテストする方法はありますか?それがすでに存在する場合、バインドの中でコードを実行しますか? – Toby
うーん、私はそれについては分かりません。しかし、私は(ドキュメント).readyの下でビデオプレーヤーの初期化を持っています。動画プレーヤーは、最初に文書を準備するのを常に待ってはいけませんか? – als26
最初にSV.Playerを作成し、それから準備ができていることを聞いています。準備が整ったイベントをすばやく送出して、すぐにdocument.ready関数に戻ってからイベントをバインドすることができますか?ビデオがキャッシュされているとしますか?ビデオを挿入せずにプレーヤーをインスタンス化する方法はありますか?プレーヤにビデオをロードする前に、準備完了イベントを追加してください。そうすれば、それは常に発火するでしょう。 もう一度 - 投稿したコードは推測できますが、イベントが発生していない場合は、SVにバグがあるか、イベントの順序が問題であることを意味するだけです。 – Toby