Skip to content

Instantly share code, notes, and snippets.

@mpgn
Created August 9, 2014 19:57
Show Gist options
  • Save mpgn/8b031225c3c9c0179093 to your computer and use it in GitHub Desktop.
Save mpgn/8b031225c3c9c0179093 to your computer and use it in GitHub Desktop.
YouTube Player paused when iframe is not visible on the screen. Live example http://jsbin.com/cocatuta/15/
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="[add your bin description]" />
<script src="//code.jquery.com/jquery-2.1.0.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<iframe id="player" type="text/html" width="640" height="390"
src="http://www.youtube.com/embed/l-gQLqv9f4o?enablejsapi=1&autoplay=1"
frameborder="0"></iframe>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi, iusto amet quisquam veniam, temporibus nesciunt ipsa ullam corporis aut, quia quis enim nihil dolores officia modi impedit odio? Non, vel.</div>
<div>Magnam molestias blanditiis voluptatum sequi tenetur veritatis ipsam, ea laboriosam, nihil eum assumenda fugiat minus, velit quia quaerat quasi ab dignissimos, delectus praesentium veniam inventore. Aut odit vero perspiciatis asperiores!</div>
<div>Debitis ab hic sed quis illum voluptatem alias, perspiciatis delectus vel voluptatibus quaerat corporis fugit officia, laudantium velit, vero atque ullam placeat a quae quisquam dolor ut repellendus! Nostrum, dolore!</div>
<div>Accusamus facilis ipsum nihil eveniet aliquid fugiat rem ratione assumenda modi ut, odio nobis suscipit. Nam sit, explicabo repellat excepturi eum cum accusantium voluptatibus, dolore expedita veritatis nisi omnis maxime!</div>
<div>Rem iste, odio quas minus porro commodi, quisquam, esse animi saepe architecto molestiae voluptate quo. Perferendis amet quisquam dolores sunt laudantium, libero minima dignissimos asperiores itaque sapiente nulla nisi at!</div>
<div>Impedit omnis rem aut ea fugiat tenetur, aperiam asperiores maxime eaque totam unde nam blanditiis aliquid officia quae quas ipsum, ex tempora illum repudiandae! Velit impedit nihil assumenda animi dolorem.</div>
<div>At quia dolore facere, quisquam corrupti accusamus ut. Pariatur beatae earum modi quis vitae. Voluptate reprehenderit labore quos ut porro pariatur soluta, veniam laudantium beatae perferendis, recusandae molestias impedit possimus.</div>
<div>Perferendis velit facere molestias, minima quae cumque repellendus rerum error ab labore? Quaerat quasi accusantium facere voluptates maiores. In deserunt, molestias, distinctio aut reprehenderit dignissimos placeat doloremque corporis voluptas delectus!</div>
<div>Expedita, amet, quaerat. Tempore, sapiente inventore nostrum sunt, accusamus ipsam ad natus consequatur error sequi ratione voluptatem adipisci dolor facilis nesciunt magnam libero quisquam. Explicabo laboriosam rem magni reprehenderit eos.</div>
<div>Sed id aut assumenda incidunt debitis ratione, earum voluptate ex excepturi iusto totam temporibus quisquam unde eos nemo explicabo deleniti ab rerum tempore aliquid laboriosam? Labore officia numquam ex voluptas.</div>
<div>Quod in voluptatum officiis vitae est sit modi, sapiente pariatur molestiae ipsum dolore atque quibusdam molestias, quam nemo libero aperiam laborum. Minus dignissimos dolores omnis asperiores, blanditiis magnam. Est, impedit.</div>
<div>Reiciendis nam ut laboriosam voluptatum soluta optio dolore quidem asperiores illum quia debitis quae ab, neque repellat maiores sed ea voluptas perferendis excepturi labore velit, quaerat, odio. Quae, minima, soluta.</div>
<div>Quasi nemo fuga ad ullam blanditiis velit tempore, accusantium, tenetur ipsa magni amet corporis cupiditate ipsum deserunt dignissimos, quos! Explicabo adipisci modi rem. Voluptatibus quibusdam officia laudantium, omnis nihil. Veniam!</div>
<div>Doloribus sunt reprehenderit odit, hic magni beatae architecto neque accusamus id? Temporibus eveniet officia quae voluptate eius earum optio voluptates et error, ad quasi! Saepe cupiditate cumque dolore debitis incidunt.</div>
<div>Deleniti dolorum saepe itaque ab dolorem amet, quidem aliquam molestias blanditiis molestiae id. Fugiat ut tempore nisi voluptatem nulla exercitationem aut, molestiae labore officiis temporibus. Sapiente atque tempora suscipit doloribus.</div>
<div>Quaerat cupiditate voluptatum iusto dolore dolorum, sequi reprehenderit, aliquam, totam quas velit impedit, non facilis suscipit quibusdam recusandae iure doloremque a deleniti quis. Nobis ullam inventore alias veniam. Iure, excepturi.</div>
<div>Voluptates dolore unde accusantium enim, sequi, nesciunt sunt amet. Omnis molestias hic soluta itaque magnam quia aperiam quisquam, similique, facere consequuntur fugiat eaque nam ratione assumenda, voluptates eum? Et, assumenda.</div>
<div>Voluptatum distinctio quos pariatur, quia officiis dignissimos ratione nam, laudantium eum ut doloremque debitis ipsam deserunt sequi, libero quae vitae cumque nihil non. Cumque fugit commodi veniam esse molestiae facere.</div>
<div>Consequuntur nemo est, temporibus placeat quod sequi aliquam error ea quam, animi, nostrum, voluptatem commodi quis eligendi maiores natus soluta laborum ex. Ratione necessitatibus qui optio alias harum. Quos, id.</div>
<div>Veritatis, doloremque obcaecati blanditiis minus incidunt autem suscipit modi, rem aliquid nemo deserunt nobis quibusdam optio vero temporibus cumque? Velit, aspernatur aliquam enim dolores, officiis nihil ab vero minima nesciunt.</div>
<div>Illo, alias aperiam. Ipsam deserunt ab illo eaque voluptatem numquam debitis cum nostrum cupiditate dolore minima voluptatum, repellendus vel illum veniam similique nobis dignissimos culpa tenetur labore veritatis tempore aliquid.</div>
<div>Blanditiis in, ut dolores magni pariatur corporis unde reprehenderit, quo ea ipsum fugit iusto at voluptatibus eum quisquam excepturi error sunt. Culpa modi pariatur ipsam beatae magni ratione eos quod.</div>
<div>Obcaecati commodi, quas. Fuga, consequuntur suscipit et consectetur temporibus molestiae necessitatibus quisquam corrupti unde architecto odio ab obcaecati quasi repudiandae optio iste reprehenderit, facere quaerat, harum reiciendis ratione praesentium sapiente.</div>
<div>Dolorum sed eaque quis nesciunt, voluptate assumenda veritatis praesentium obcaecati officiis sapiente deserunt harum ipsam dignissimos, doloribus exercitationem. Numquam minima et, nemo totam vitae. Aut, eum! Aut vitae, quod odit!</div>
<div>Aliquid dicta reprehenderit ea deserunt quis mollitia animi officiis dolor corporis vitae perferendis natus, illo ducimus dolore fugit eos facilis vero, voluptatem porro, ad. Ipsa assumenda animi, et magni dolores?</div>
<div>Hic recusandae repellendus molestiae harum modi magnam provident porro voluptate. Expedita ipsa voluptatibus earum, provident aspernatur mollitia accusamus quibusdam dignissimos qui! Cum quibusdam est esse. Quasi quo officia earum possimus?</div>
<div>Sint accusantium esse sapiente eum mollitia nihil ducimus, est fuga id neque nisi quaerat iste officia placeat quas, maxime et ea similique delectus aut, labore earum. Asperiores quos ad quaerat!</div>
<div>Sint sequi ea optio minus quia vitae doloribus. Repudiandae minus commodi quia consequatur sequi dolorum natus reiciendis aspernatur nam ipsam dolor, consectetur quod harum, odit, cumque id labore facilis quasi.</div>
<div>Tenetur sequi fugiat et nobis deserunt, voluptatibus! Soluta quaerat iste nesciunt expedita labore, repudiandae ex optio provident officia consequatur tenetur esse illo nihil, unde excepturi fugiat perferendis numquam similique nam?</div>
<div>Consequuntur assumenda vero alias. Repellendus dolore voluptas obcaecati tempore debitis, expedita id deserunt illum numquam. Alias dolorem cum ea repellendus explicabo fuga, odit corrupti voluptate esse magnam unde, quo perspiciatis.</div>
<div>Est voluptatem neque nam aliquid tenetur perferendis ullam reprehenderit, eius provident delectus quisquam, facilis quia natus quo itaque nisi deserunt at porro. Quidem numquam eaque porro esse dolores fugiat debitis?</div>
<div>Enim iste veniam voluptates odio voluptatem blanditiis, commodi dolorem eum quo vel rem nostrum in eligendi ipsa, repudiandae maxime amet. Doloremque ut eum, at, libero quo iste ipsa eveniet cupiditate?</div>
<div>Asperiores sint adipisci vero saepe quis quisquam eius earum quas, veritatis unde voluptates animi excepturi ipsum blanditiis omnis facilis quaerat nisi amet? Laboriosam quis quas, sed, illo repudiandae odio blanditiis!</div>
<div>Non, animi, amet? Rem qui tempora reprehenderit eos velit dolore, cum ut vitae minima? Quisquam veniam, doloremque eligendi fugiat aliquid minima! Ut sunt esse voluptatem nulla, iure harum sint deserunt!</div>
<div>Ipsa, voluptatibus praesentium fugit modi facere error saepe deserunt. Ea voluptatibus, repellat sunt. Cum aperiam rerum corrupti officiis distinctio, at quis veniam neque dolor, quia ipsum porro mollitia molestiae dicta?</div>
<div>Neque in soluta dolores, voluptate, autem debitis! Adipisci omnis qui, aut suscipit dolore delectus magnam veniam, sit aliquid id quaerat ut assumenda et itaque quam ipsum, repellendus nihil eaque natus.</div>
<div>Adipisci, quod, eaque nulla pariatur laborum deserunt cum ratione dolorum ut vero accusamus nisi aut alias dolor distinctio mollitia itaque aliquid ea incidunt. Explicabo animi odit minus esse doloremque cupiditate.</div>
<div>Cupiditate eum nam inventore labore doloremque possimus ullam, alias sed commodi perspiciatis aut, sunt quos? Optio unde excepturi dolore ex aut facilis eveniet consectetur sit, esse autem iure, nesciunt et.</div>
<div>Aut sint, laborum minus autem quisquam molestias quia fugiat itaque nam fuga labore, possimus iusto sunt. Architecto, placeat libero. Esse velit natus, culpa tenetur praesentium maiores. Inventore delectus, temporibus enim.</div>
<div>Repudiandae tempora dolore quam a. Assumenda aliquid ad reprehenderit amet vero architecto, quam sequi id eveniet natus vitae minima, velit, nulla voluptatem voluptate necessitatibus tempora repellendus ullam, iusto temporibus pariatur!</div>
<div>Tempora sapiente doloribus, illum magnam? Commodi culpa porro illum adipisci eveniet nulla temporibus reprehenderit impedit corrupti distinctio vel, ducimus numquam quasi deserunt accusantium eos sed mollitia sint neque ad vero.</div>
<div>Quas recusandae, quaerat quia a eaque nemo. Labore qui consequatur perferendis inventore, distinctio asperiores quam dolore! Culpa rem a tenetur odit, quisquam atque incidunt voluptatem animi recusandae quam, saepe vero.</div>
<div>Ea nostrum, nesciunt odio ducimus impedit molestias magni delectus sequi numquam esse possimus aliquam culpa laboriosam, rem a iusto dicta fugit, ratione? Pariatur quos distinctio blanditiis, vero laudantium quidem, libero.</div>
<div>Est adipisci maiores et nulla. Laboriosam veniam, dolorum esse totam repellendus necessitatibus molestiae praesentium, consequuntur, accusamus aliquam officiis, accusantium. Sint sapiente esse qui veniam accusamus delectus deserunt libero odio necessitatibus!</div>
<div>Commodi blanditiis laudantium debitis sequi, sapiente porro deserunt eaque, explicabo mollitia nam maiores iusto hic quidem earum! Eligendi mollitia ipsum voluptas unde dolorem recusandae quos ab error deserunt consectetur. Eligendi.</div>
<div>Eius aspernatur voluptates, voluptatibus pariatur fugiat voluptate suscipit corporis rem dolore repellendus hic quaerat quisquam, accusamus animi minus, quae in sunt. Repudiandae ad sunt autem iusto, quisquam pariatur totam, libero.</div>
<div>Natus, nihil, assumenda. Consequuntur, cumque odit odio placeat perferendis tempore architecto cupiditate natus nesciunt modi officiis facilis dolores, mollitia fuga magni maxime ad reiciendis, debitis sit voluptate minus sapiente praesentium.</div>
<div>Voluptatibus esse magni cupiditate obcaecati porro. Ipsam est modi, veniam libero! Laboriosam iste dolore tenetur nobis sequi eligendi vel dolorem, illo soluta minus labore tempore est recusandae, repudiandae, delectus rerum!</div>
<div>Veritatis fugiat, quod hic architecto, laudantium inventore at similique recusandae tempora, rerum deserunt vero voluptas totam aliquam, a harum minus id animi aperiam. Pariatur magni doloribus praesentium inventore illum recusandae?</div>
<div>Vero, cum consequatur qui maiores sit veritatis non harum distinctio, nobis optio ad dicta nostrum placeat vitae similique voluptatem minima quia voluptate magni voluptas officia? Dolor sed quo assumenda debitis.</div>
</body>
</html>
//play when video is visible
var videos = document.getElementsByTagName("iframe"), fraction = 0.8;
function checkScroll() {
for(var i = 0; i < videos.length; i++) {
var video = videos[i];
var x = 0,
y = 0,
w = video.width,
h = video.height,
r, //right
b, //bottom
visibleX, visibleY, visible,
parent;
parent = video;
while (parent && parent !== document.body) {
x += parent.offsetLeft;
y += parent.offsetTop;
parent = parent.offsetParent;
}
r = x + parseInt(w);
b = y + parseInt(h);
visibleX = Math.max(0, Math.min(w, window.pageXOffset + window.innerWidth - x, r - window.pageXOffset));
visibleY = Math.max(0, Math.min(h, window.pageYOffset + window.innerHeight - y, b - window.pageYOffset));
visible = visibleX * visibleY / (w * h);
if (visible > fraction) {
playVideo();
} else {
pauseVideo();
}
}
}
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// 4. The API will call this function when the video player is ready.
function onPlayerReady(event) {
window.addEventListener('scroll', checkScroll, false);
window.addEventListener('resize', checkScroll, false);
//check at least once so you don't have to wait for scrolling for the video to start
window.addEventListener('load', checkScroll, false);
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING) {
//console.log("event played");
} else {
//console.log("event paused");
}
}
function stopVideo() {
player.stopVideo();
}
function playVideo() {
player.playVideo();
}
function pauseVideo() {
player.pauseVideo();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment