2017-04-24 225 views
0

我有一个动态添加的视频元素,我以前有一个内联oncanplay脚本。html5视频canplay事件与jQuery

<video id="videoCurrent" type="video/mp4" oncanplay="displayVideoChapters(this);" controls> 

视频元素被添加到一个固定的div

<div id="videoDisplay"> </div> 

我现在想给canplay事件使用jQuery从脚本连接到视频元素<head>

$(document).ready(function() { 
    $("#videoDisplay").on('canplay', 'video#videoCurrent', function() { 
    console.log(this); 
    }); 
}); 
文件链接

但是,没有任何反应。我尝试过其他事件; loadstart,pauseplay,结果相同。 mouseover是我可以触发console.log(this)的唯一事件。 我不理解什么?

回答

0

我解决了这个问题,将canplay事件添加到回调函数中,该函数从缩略图链接获取动态视频播放器。

$('#staticVideoPlayerContainer').on('click', 'a.videoUrl', function() { 
    $.get('url', function(data) { 
     $("#videoDisplay").html(data);     //Dynamic video player is added 
     $("#videoCurrent")[0].oncanplay = function() { //Event listener attached 
      console.log(this);       //Logs video on canplay 
     } 
    }); 
}); 
1

我不知道的jQuery有一个“canplay”事件,正如我在W3C学校看到了这个canplay事件,但在普通的JavaScript:

var vid = document.getElementById("videoCurrent"); 
vid.oncanplaythrough = function() { 
    console.log("Can play through video without stopping"); 
    vid.play() 
}; 

你可能会首先与第一块尝试代码,看它是否有效,我还记得.play()函数是用于在JavaScript中播放视频的函数,希望这有助于。

+0

啊是的,你似乎是正确的,https://api.jquery.com/category/events/不列出任何play()事件。 – Thomas