javascript - 单击时隐藏按钮并在视频结束时显示第二个按钮
问题描述
Stack Overflow 上的第一篇文章!
我有一个 HTML5 视频,其中删除了默认控件并添加了 Play/Spin to Win 按钮。单击后,我需要此按钮消失,然后在视频播放完毕后出现第二个按钮,该按钮链接到新 URL。
任何指导将不胜感激。
我到目前为止的代码如下:
function playPause(btn, vid) {
var vid = document.getElementById(vid);
if (vid.paused) {
vid.play();
btn.innerHTML = "Pause";
} else {
vid.pause();
btn.innerHTML = "Play";
}
}
div#video_player_box {
width: 550px;
background: #000;
margin: 0px auto;
}
div#video_controls_bar {
background: #333;
padding: 10px;
}
#playpausebtn {
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="video_player_box">
<video id="my_video" width="550" height="300" autoplay>
<source src="memory-of-a-woman.mp4">
</video>
<div id="video_controls_bar">
<button id="playpausebtn" onclick="playPause(this,'my_video')">Spin to Win</button>
</div>
</div>
解决方案
您应该使用Video API 的媒体事件来实现这一点。具体来说,您需要ended
事件侦听器。
还更正了无效的参考。
function playPause(btn, vid) {
var vid = document.getElementById(vid);
if (vid.paused) {
vid.play();
btn.innerHTML = "Pause";
} else {
vid.pause();
btn.innerHTML = "Play";
}
vid.onended = function () {
console.log("Ended. Do something.");
btn.style.display = "none";
};
}
window.onload = function () {
var vid = document.getElementById("my_video");
vid.onended = function () {
console.log("Ended. Do something.");
};
};
div#video_player_box {
width: 550px;
background: #000;
margin: 0px auto;
}
div#video_controls_bar {
background: #333;
padding: 10px;
}
#playpausebtn {
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="video_player_box">
<video id="my_video" width="550" height="300" autoplay>
<source src="https://interactive-examples.mdn.mozilla.net/media/examples/stream_of_water.webm">
</video>
<div id="video_controls_bar">
<button id="playpausebtn" onclick="playPause(this,'my_video')">Spin to Win</button>
</div>
</div>
所以一旦视频结束,回调函数就会被事件触发。您可以设置新的来源。通过运行代码段并让视频结束进行检查,您将在控制台中看到消息弹出窗口。
推荐阅读
- javascript - 从不同的useEffects反应批量状态更新?
- html - 如何在 pug 中设置元素名称?
- laravel - Laravel EmailVerification 控制器的构造方法是做什么的?
- google-sheets - Google 电子表格内部查询中的错误
- angular - 如何从商店中删除功能
- c - 每秒(或更少)将新文件写入磁盘是否会对硬件造成风险?
- react-native - 网络请求失败 Expo Fetch
- spring-boot - 在 Spring Boot 中用 @RestController 替换 @Controller 不会显示预期的视图
- python - 查找子列表的特定结果
- c# - 当我在 ASP.NET CORE Razor 中添加时,我在 ASP.NET 之外创建的 Html 和 Css 不适合