结束事件videojs不起作用
Posted
技术标签:
【中文标题】结束事件videojs不起作用【英文标题】:ended event videojs not working 【发布时间】:2013-05-10 13:14:35 【问题描述】:我想在我的视频播放完毕后触发一个简单的事件。我把它直接放在我的视频标签下面。
<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 is not a function,我找不到原因。
您可以在此处看到它:78.47.121.50(*** 不允许创建链接) 输入代码 01-01-01-2012 以调出视频。
任何见解都非常重要!
亲切的问候, 杰森。
【问题讨论】:
这可能是this
问题,因为ready
方法似乎是异步的。你认为this
指的是什么?您希望 addEvent
方法出现在哪个对象上?
@Sushil 是一个视频播放器,结合了html、js和flash创建一个通用播放器。 (见:videojs.com)
【参考方案1】:
“addEvent”和“removeEvent”被替换为“on”和“off”
尝试:
this.on("ended", function()
【讨论】:
嗨,Lyn,这成功了!非常感谢 :) 你能告诉我你在哪里找到这个信息吗?我在文档中找不到它。 我注意到它是项目 github 存储库中最新的提交评论。真的只是随机运气。 嗯,谢谢分享!愚蠢的不要将它包含在文档中...我现在正在尝试包含一个用于 videojs 的插件,但它仍在使用 addEvent 和 V 你知道我是否可以将它替换为 on/关闭和视频?【参考方案2】:对于在某些浏览器中仍然存在结束事件问题的用户,您可以求助于此修复:
player.ready(function()
var myPlayer = this;
playerInstance.on("timeupdate", function(event) //chrome fix
if (event.currentTarget.currentTime == event.currentTarget.duration)
console.log('video ended');
);
);
【讨论】:
我的结束事件在使用 Chrome 浏览器时没有触发。我已经尝试过这个修复,但它似乎不起作用。我认为它可能需要包含在以下内容中:videojs("video2").ready(function() 那会更合适吗?不明白为什么它可以在其他浏览器上运行,但不能在 Chrome 上运行... 这帮助我解决了奇怪的 chrome 错误,有时不会触发结束。谢谢! @CalebO'Leary,我收到错误消息:找不到名称“playerInstance”。添加上述代码后。有什么帮助吗?【参考方案3】:如果最终用户有意寻找视频以结束保持视频暂停,则不会触发 ended 事件。我能够让它工作:
<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>
【讨论】:
【参考方案4】:2020 年更新答案:
let player = videojs('video-player-id');
player.on('ended', function()
this.dispose();
);
我认为最好调用 dispose 更多关于为什么超过here
【讨论】:
【参考方案5】:在 *** 上,我找到了解决方案的一部分,另一部分从 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>
这会在视频结束时提醒您。 将其放在您的视频代码下 它应该可以工作。
【讨论】:
以上是关于结束事件videojs不起作用的主要内容,如果未能解决你的问题,请参考以下文章
UISlider 的 editingDidEnd 事件在 iPad 中不起作用