Last active
October 8, 2024 13:22
-
-
Save cferdinandi/9044694 to your computer and use it in GitHub Desktop.
A simple method to stop YouTube, Vimeo, and HTML5 videos from playing.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Stop an iframe or HTML5 <video> from playing | |
* @param {Element} element The element that contains the video | |
*/ | |
var stopVideo = function ( element ) { | |
var iframe = element.querySelector( 'iframe'); | |
var video = element.querySelector( 'video' ); | |
if ( iframe ) { | |
var iframeSrc = iframe.src; | |
iframe.src = iframeSrc; | |
} | |
if ( video ) { | |
video.pause(); | |
} | |
}; |
My updated version to stop all videos on page:
const stopVideos = () => { document.querySelectorAll('iframe').forEach(v => { v.src = v.src }); document.querySelectorAll('video').forEach(v => { v.pause() }); };
(I couldn't use the YouTube
postMessage
one because some of my YT videos were displayed in a nested iframe via embed.ly)
Excellent! Thumbs up! d.,.b
does this stop the related videos from showing on a live youtube stream playing on video js player?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
i tried the two answers and this turnt out to be the best one, in the first one you might enconter the problem of " var iframe = element.querySelector( 'iframe'); is not a function", dont know if it was because of my tsconfig or what.
Also, if you must call the function in several components (wich is my case) you should consider switching var stopVideos to const stopVideos an all the following var to let to avoid scope problems
that being said, amazing approach man, well done