回调函数不适合HTML5视频播放器
Callback function is not working for HTML5 Video player
我正在创建HTML视频播放器。这样我就使用了"http://www.videojs.com/"插件。在下面的代码中,玩家被成功创建。
<video id="example_video_1" src="" class="video-js vjs-default-skin" controls preload="auto" width="640" height="360" data-setup='{ "techOrder": ["youtube"], "src": "http://www.youtube.com/watch?v=xjS6SftYQaQ" }'>
</video>
<script type="text/javascript">
$("#example_video_1").bind("ended", function() {
alert("I'm done! Here is the Callback");
});
</script>
我的问题是我怎么知道视频完成了?为此,我写了代码,但它不工作。你能帮我吗?
提前致谢
Video.js,如果你使用的是"技术"而不是"html5",将会替换你的<video>
元素。"技术"可以是Flash或一些插件,就像你的情况一样,就是YouTube。这里发生的是你将回调附加到video元素然后,当video。js替换那个元素时,它无法知道你已经附加了回调,所以你的回调丢失了。
相反,您需要将回调函数附加到Video.js对象。但你需要小心,因为直到video .js有机会扫描视频元素之后,这个对象才存在,而在脚本执行时,这还没有发生。这里有几个选项
1)在Javascript中直接创建Video.js对象,如示例所示。
2)等一会儿。这样的:
$(function () {
videojs('example_video_1').on('ended', function () {
//todo: that voodoo that you do so well
});
});
第二个例子可能取决于你如何/在哪里加载video.js脚本。所以,如果这不起作用,试试选项1
jQuery中的"bind"函数已弃用。请使用。on函数。
<script type="text/javascript">
$("#example_video_1").on("ended", function() {
alert("I'm done! Here is the Callback");
});
</script>
上述解决方案应该适用于本地嵌入的所有视频。由于提问者在下面的评论中提到他正在使用youtube嵌入,我将发布一个嵌入式视频的解决方案。
Youtube为其视频提供了一个javascript API。
onStateChange方法提供了你正在寻找的功能:
<script>
var video = document.getElementById('example_video_1');
video.addEventListener("onStateChange", function(state){
if(state === 0){
alert("I'm done here!");
}
});
</script>
相关文章:
- 如何检查用户在html5视频播放器中观看了完整的视频
- html5视频播放器和视频js之间的关系
- 视频播放器错误promise DOMException中未捕获
- html视频播放器并不总是从src读取
- HTML 5视频播放器用给定的数字更新currentTime
- html5视频交互式视频播放器
- 如何构建自己的 VAST 视频播放器
- 如何专注于YouTube视频播放器对象
- 如何在前台弹出YouTube视频播放器
- 如何在悬停在图像上时弹出youtube视频播放器
- 移动设备的动态视口始终包含固定尺寸的视频播放器
- 当我在视频播放器上单击播放时,它会在页面上播放两个视频
- 嵌入视频播放器播放按钮可同时播放所有视频播放器
- 设置计时器以等待为flash回退视频播放器加载swfobject脚本
- 三星智能电视视频播放器应用程序-访问存储在USB上的mp4
- 创建视频播放器(Quicktime浏览器插件)React元素,输出缺少的视频属性
- 当按下按钮时,使视频播放器出现
- 使用Javascript更改ActiveX视频播放器源代码
- 弹出式视频播放器显示在Firefox中的奇数位置
- 如何在iOS/iPad上进入全屏模式时停止HTML5视频播放器