我希望在视频完成后触发一个简单的事件。我直接把它放在我的视频标签上。
<script type="text/javascript">
var myPlayer = videojs("session_video");
videojs("session_video").ready(function(){
this.addEvent("ended", function(){
alert('Here I am');
});
});
</script>
但是我得到:TypeError:this.addEvent不是一个函数,我找不到原因。
你可以在这里看到它:78.47.121.50(stackoverflow不允许这个链接) 输入代码01-01-01-2012以显示视频。
任何见解都非常有用!
亲切的问候, 杰森。
答案 0 :(得分:48)
“addEvent”和“removeEvent”被“on”和“off”替换
尝试:
this.on("ended", function(){
答案 1 :(得分:5)
对于那些在某些浏览器中仍然存在已结束事件问题的用户,您可以使用此修复程序:
player.ready(function() {
var myPlayer = this;
playerInstance.on("timeupdate", function(event) { //chrome fix
if (event.currentTarget.currentTime == event.currentTarget.duration) {
console.log('video ended');
}
});
});
答案 2 :(得分:5)
如果最终用户故意搜索视频以结束视频暂停,则已结束事件将不会触发。我能够把它当作:
<script type="text/javascript">
var player = videojs('my_video', {}, function() {});
player.ready(function(){
var duration_time = Math.floor(this.duration());
this.on('timeupdate', function() {
var current_time = Math.floor(this.currentTime());
if ( current_time > 0 && ( current_time == duration_time ) ){
$('#continue_button').removeAttr("disabled");
}
});
});
</script>
答案 3 :(得分:2)
2020更新的答案:
let player = videojs('video-player-id');
player.on('ended', function() {
this.dispose();
});
我认为最好将处置问题放在here
上答案 4 :(得分:0)
在Stackoverflow上,我找到了解决方案的一部分,另一部分是从Lyn Headley的最佳答案中找到的。
<script type="text/javascript">
//rename subtitle button
videojs.addLanguage('de', {
"captions off": "Untertitel aus",
});
videojs(document.querySelector('video') /* or selector string */, {
techOrder: ['html5', 'flash'],
controls: true,
autoplay: false,
preload: 'false',
language: 'de',
flash: {
swf: 'video-js.swf'
}
}, function(){
// Player (this) is initialized and ready.
this.on('ended', function(){
alert('ended');
});
this.on('firstplay', function(){
alert('firstplay');
});
});
</script>
这将在视频结束时提醒您。 将它放在视频代码下 它应该有效。