addEventListener' playing'只发射一次。

时间:2016-12-07 04:09:18

标签: javascript html5-video addeventlistener

我有以下$("#<%=TextBox2.ClientID %>").pikaday({ format: 'DD/MM/YYYY', disableWeekends: true, firstDay: 1, disableDayFn: function(date){ // Disable Monday and Tuesday return (date.getDay() === 1 || date.getDay() === 2); } }); 获取给定网页上的所有script元素,然后向其应用video个事件:

playing

现在,当我运行页面并点击视频1时,我看到var video = document.getElementsByTagName("video"); for(var i = 0; i < video.length; i++){ (function(vid) { vid.addEventListener('playing', function(){ var percentComplete = Math.round((vid.currentTime / vid.duration) * 100); console.log(percentComplete); }); }) (video[i]); } 被记录到percentComplete,但是当视频1完成并且我点击视频2时,没有任何内容写入{ {1}},似乎这个console log仅适用于点击的第一个视频,有人可以解释为什么以及如何解决这个问题,以便每次播放视频时它都会触发?

1 个答案:

答案 0 :(得分:0)

尝试删除外部闭包并在侦听器中使用event.target。

var video = document.getElementsByTagName("video");

for (var i = 0; i < video.length; i++) {
    video[i].addEventListener('playing', function (event) {
        var vid = event.target
        var progress = Math.round((vid.currentTime / vid.duration) * 100)
        console.log(progress)
    })
}

对于任何有兴趣的人,这里是the full list of media events