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/
コードをテストするためにJSFiddleなどを提供できますか? – FredMaggiowski
それをチェックアウトして、ちょうど行った – user1938653
コンソールをチェックすると、それは一度だけトリガーし、停止したときにのみ発生します。ビデオの中でマウスを動かすと、私がもう一度止まらない限り(そして1回だけ発射されない限り)、私はあなたの質問を理解しています。これはあなたが探している行動ですね。 – FredMaggiowski