如何使用javascript自定义事件而不是while循环?

时间:2015-06-13 16:38:55

标签: javascript events

当一个不断变化的元素变成某个值时,我试图调用一个函数。

player.getCurrentTime() >= 0.95 * player.getDuration()我要拨打handleEvent()时。最好的方法是什么? 这是我尝试的最新版本:

window.onLoad=function() {
    var player = document.getElementById("movie_player");

    player.addEventListener("customEvent", handleEvent(), false);

    function handleEvent() {
    // do something here
    }

    var myEvent = new CustomEvent("customEvent", {
        detail: {
                    time: 0.95 * getDuration()
                }
    });
    document.body.dispatchEvent(myEvent);
}

我将如何做到这一点?

2 个答案:

答案 0 :(得分:1)

您已经在使用自定义事件,并且该代码似乎接近正确,只需删除括号或我怀疑它是否有效:

player.addEventListener("customEvent", handleEvent, false);

答案 1 :(得分:1)

我猜您正在使用YouTube播放器。根据{{​​3}},您可以使用YT.PlayerState.PLAYING事件来跟踪getCurrentTime()。看看下面的代码:

player.addEventListener(YT.PlayerState.PLAYING, onVideoPlaying, false);

function onVideoPlaying(){
  console.log('video is playing');
  if (player.getCurrentTime() >= 0.95 * player.getDuration()){
    console.log('Here I am!');
    // do Something
  }
}

另外,我认为你不需要自己dispatchEvent,因为如上所述,player已经发送了一个你可以利用的不断变化的事件。

如果有任何不清楚或者我错过了任何细节,请告诉我。