2017-04-24 117 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