我知道這應該是直線前進,如果我只是用onended事件,像這樣:切換信號源已經結束
<video src="video.ogv" id="myVideo">
</video>
<script type='text/javascript'>
document.getElementById('myVideo').addEventListener('ended',myHandler,false);
function myHandler(e) {
// What you want to do after the event
}
</script>
然而,結束事件在激發EVN後我切換音軌。我正在使用videojs播放器。
在這種特殊情況下,我在尋找發揮剪輯B,和它完成的那一刻,切換到剪輯C.
這裏是我的代碼如下所示:
// clipA is currently playing......
// User hits a button which calls switchVideo();
// video = videojs('video-player');
var switchVideo = function (clipB, clipC) {
video.src(clipB);
video.play();
// When clipB has ended...
video.ended(function() {
console.log("clipB ended");
video.src(clipC);
video.play();
})
};
的當我調用這個函數時,我可以看到它跳到clipB片刻,然後觸發了這個冒險事件,然後視頻饋送跳轉到clipC。 如何忽略clipA的第一個冒險事件,而只是偵聽clipB?
UPDATE:這裏是最後的正確答案是什麼樣子:
// video = videojs('video-player');
var switchVideo = function (clipB, clipC) {
video.src(clipB);
video.play();
// When clipB has ended...
video.one('ended', function() {
console.log("clibB ended");
video.src(clipC);
video.play();
})
};
更新2:我發現上面的代碼只能使用一次。 (這就是所謂的'one'畢竟,在我的情況下,我需要能夠做到這一點多次。
我做了一個小小的改變,那就是用video.on('ended',myfunction )代替video.one( '結束',myFunction的)。現在,我可以把它作爲根據需要多次。
我讀this Stack Overflow響應後得出了上述結論。
「的addEvent 「和」removeEvent「被替換爲」on「和」off「per the videojs API. - @Lyn Headley
最終的解決方案:
// video = videojs('video-player');
var switchVideo = function (clipB, clipC) {
video.src(clipB);
video.play();
// When clipB has ended...
video.on('ended', function() {
console.log("clibB ended");
video.src(clipC);
video.play();
})
};
您是否嘗試過'video.one( '結束',函數(){}什麼)'?這隻會在視頻結束後纔會運行該功能,並且只會執行一次,防止回調堆疊。 –
@keizom我在這裏沒有看到任何jQuery。 – DavidDomain
您是否嘗試過removeEventListener(),切換到其他視頻,重新附加事件處理程序? – m69