I have a HTML5 video that has a poster and a CSS play overlay button. I am trying to get the video to load once it has ended so that it shows the poster and the play overlay but
To prevent
Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause().
error, wrap if
statement within click
handler within setTimeout()
call.
See also How to prevent "The play() request was interrupted by a call to pause()" error?
$(document).ready(function() {
$('.video').parent().click(function () {
var vid = $(this).children(".video").get(0);
setTimeout(function() {
if (vid.paused) {
vid.play();
$(this).children(".playpause").fadeOut();
} else {
vid.pause();
$(this).children(".playpause").fadeIn();
}
})
});
var video= $(".video").get(0);
video.addEventListener('ended',function () {
video.load();
$(".playpause").show();
}, false);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
click<br>
<span class="playpause">play pause</span>
<video controls class="video" poster="https://placehold.it/350x150" src="https://nickdesaulniers.github.io/netfix/demo/frag_bunny.mp4"></video>
</div>