我有一个动态添加的视频元素,我之前有一个内联oncanplay
脚本。
<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
,pause
,play
具有相同的结果。 mouseover
是唯一可以触发console.log(this)的事件。
我不理解的是什么?
答案 0 :(得分: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中播放视频的函数,希望这会有所帮助。
答案 1 :(得分: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
}
});
});
答案 2 :(得分:0)
您可以这样使用它,对我来说效果很好:
$('video').each(function(index, video) {
$(video).on('canplay', function() {
console.log(video, 'this video can play');
});
});