2016-03-26 19 views
0
video.onloadedmetadata = function start(){ //invoke 
    var thethis = this; 
    var event; 
    var timeout; 
    function func(){ 
     mainFunction(event); //this is supposed to fire only once, instead it fires constantly. 
     console.log("sending!!!"); //This won't stop show up in the console 
     clearTimeout(timeout); 
     console.log(event); 
    } 


    video.addEventListener("mousemove", function(e){ 
     event = e; 
     outsideElement = false; 
     clearTimeout(timeout); 
     timeout = setTimeout(func, 600); 
    }); 

    video.addEventListener("mouseout", function(){ //mouse is out of elem 
     outsideElement = true; //extra security, really make sure not to fire Mainfunction will check - if it's indeed outsideElement then it won't work properly. 
     clearTimeout(timeout); 
    }); //don't fire mainFunction in this case 


} 

私がやっていることは、実際には機能しませんが、かなりシンプルです。ユーザーが自分のビデオ上でマウスを動かし、特定の場所で0.5秒間停止すると、mainFunctionという関数が一度呼び出されます。次回はマウスを動かしてスポットに止まるが、再び起こるはずだが、代わりにmainFunctionの発射を止めることはない。いくつかの理由でjQueryを使用することはできませんので、もしあなたが助けることができれば、ライブラリがなくてもどうぞ。タイマは機能の起動を停止しません

JS FIDDLE:(あまりにコンソールを確認してください) https://jsfiddle.net/7con1p04/1/

+0

コードをテストするためにJSFiddleなどを提供できますか? – FredMaggiowski

+0

それをチェックアウトして、ちょうど行った – user1938653

+0

コンソールをチェックすると、それは一度だけトリガーし、停止したときにのみ発生します。ビデオの中でマウスを動かすと、私がもう一度止まらない限り(そして1回だけ発射されない限り)、私はあなたの質問を理解しています。これはあなたが探している行動ですね。 – FredMaggiowski

答えて

-1

ここだけのタイマ/ MouseMoveの遅延(同じコード、他のちょうどすべて取り除か)までご機能を沸騰jsFiddleです:

var timeout; 

function func(){ 
    console.log('fire'); 
    clearTimeout(timeout); 
} 

document.addEventListener("mousemove", function(e){ 
    clearTimeout(timeout); 
    timeout = setTimeout(func, 600); 
}); 

これは完璧に動作します。

私はタイマー/遅延ロジックそのもの以外の部分を見ています。この時点で私はあなただったならば、私はそれらのすべての機能に別々のconsole.log呼び出しを入れて、あなたが期待しているときだけ呼び出されることを確認します。

+0

あなたが送信したものでコンソールを確認してください。私は "火"コンソールを1回だけ発射する必要があると言っていたが、ユーザーは半分の時間、特定の場所に止まっていた。彼はIDLEの間、何も起こらないはずです。 – user1938653

+0

@ user1938653 - 私の唯一の出力がコンソールであったことを考えれば、それがうまくいっていると言う前にコンソールをチェックしたことはかなり良い賭けです:)そして、私にとってはマウスをドキュメントに移動させ、それは発火する。それから私はそれを残して何も起こらない...私はそれをもう一度動かしてからそれをやめなければ...もしそれを止めてからもう半分の時間がもう一回起きる。あなたがそれを見ていない場合は、あなたが何をしているのかを明示する必要があります。なぜなら、それは明らかにそれに特有のものですから。 –

+0

@ user1938653 - あなたの投稿するjsfiddleと同じですこのイベントは、マウスを動かしてから0.5秒間停止した後、一度に1回だけ起動し、移動してから停止してもう半分待つまで何もしません。 Fredは同じ結果を報告します。あなたは唯一の問題、芽を見ている人です。私はあなたのようにChrome上でこれらの両方のテストを行いました。あなたのコードではなく、あなたのシステムに何かがあります。 –

関連する問題