0

断続的なエラーが発生するという苛立たしい状況にあります。機能している場合、PHP はビデオと 3 つの画像を表示するように指定します。ページが読み込まれてから 800 ミリ秒後にビデオの再生が開始され、ビデオが終了するとすぐに画像が表示されます。この時点で、ユーザーはキー (画像の位置に対応) を押し、キーを押すと反応時間を測定する関数がトリガーされます。 、選択した写真を保存し、次のページをロードすると、これらすべてが新しいビデオと新しい写真で再び行われます。

それはすべてうまくいきます...時々。

また、ビデオが表示されると思っていたところに空白の画面が表示されることもあります。すぐに発生することもあれば、15 回または 20 回の読み込みが成功した後、またはその間のどこかで発生することもあります。Chrome 27.0.1453.93 を実行しており、Chrome の組み込みの JavaScript コンソールを使用してエラーを追跡しています。ビデオの読み込みに失敗した場合でも、javascript エラーは発生しません (DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> を使用)。

どこで問題が発生しているかを特定するために、一連のイベント リスナーを追加し、匿名関数を使用して出力を js コンソール ログ ファイルに渡し、ビデオ イベントのどの段階が発生しているか、または発生していないかを確認しました。少なくとも、信頼できるパターンは次のとおりです。ビデオの読み込みに失敗するたびに、loadstart は発生しますが、durationchange は発生しません。継続を妨げている問題が何であるかがわかりません。

ここでの回答を楽しみにしています。それが回答であろうと、経験を裏付けている他の人であろうと、私はそれほど狂っていません! 最も関連性の高い 2 つの JavaScript 関数をここに含めますが、どれだけ役立つかはわかりません。

<script>

    function playVid(newSource){

           console.log("playVid worked");
           setTimeout(function(){//tells it to wait for some amount of time (below) before doing the next part
               console.log("setTimeout was called");
               document.getElementById("StimClip").innerHTML="<video id='video1'> <source src='" + newSource + "' type='video/mp4'>Something went wrong.  Sorry 'bout that!</video>"; //replace blank.jpg with the appropriate video
               console.log("the inner html was set");
               myAddListener();
               console.log("myAddListener was called");
               var  myVid=document.getElementById("StimClip"); //create a new variable to identify the video
               console.log("the myVid variable was created");
               video1.play(); //play the video

        } //


           ,800); //finishes the setTimeout call by specifying how many msec to wait before executing.


        }

function myAddListener(){
        console.log("myAddListener worked");
        var myVideo = document.getElementsByTagName('video')[0];         
        myVideo.addEventListener('waiting', function(){console.log("I'm WAITING...!")}, false);
        myVideo.addEventListener('suspend', function(){console.log("Nice suspenders.")}, false);
        myVideo.addEventListener('abort', function(){console.log("video was aborted")}, false);
        myVideo.addEventListener('error', function(){console.log("there was an error")}, false);
        myVideo.addEventListener('loadstart', function(){console.log("load start worked")}, false);
        myVideo.addEventListener('durationchange', function(){console.log("the duration changed")}, false);
        myVideo.addEventListener('loadedmetadata', function(){console.log("metadata was loaded")}, false);
        myVideo.addEventListener('loadeddata', function(){console.log("data was loaded")}, false);
        myVideo.addEventListener('progress', function(){console.log("progress...? ")}, false);
        myVideo.addEventListener('canplay', function(){console.log("video can play")}, false);
        myVideo.addEventListener('canplaythrough', function(){console.log("can play through worked")}, false);
        myVideo.addEventListener('playing', function(){console.log("the video started playing")}, false);
        myVideo.addEventListener('ended', ShowPics, false); 
    }
</script>
4

1 に答える 1

1

ああそうねえ。これに答えようとして時間を無駄にした人が他にいなくてよかったです。ご参考までに、loadstart と durationchange の間で動画の読み込みが停止するのは、その動画が存在しない場合です! (自分の動画の 1 つのファイル名にタイプミスがありました。動画の順序がランダム化されているため、同じ動画を読み込もうとすると常に失敗しているとは言えませんでした。)

修理済み。

于 2013-05-31T05:00:43.797 に答える