varbase_media-9.0.0-alpha1/js/oembed-frame.varbase-media.youtube.js

js/oembed-frame.varbase-media.youtube.js
/**
 * @file
 * Behaviors of Youtube player in the Default OEmbed iframe.
 */

function ready(fn) {
  if (document.readyState !== 'loading') {
    fn();
  } else if (document.addEventListener) {
    document.addEventListener('DOMContentLoaded', fn);
  } else {
    document.attachEvent('onreadystatechange', function checkReadyState() {
      if (document.readyState !== 'loading') fn();
    });
  }
}

const tag = document.createElement('script');
tag.src = '//www.youtube.com/player_api';
const firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

ready(function initYouTubePlayer() {
  const mediaIframe = document.querySelector('iframe');
  mediaIframe.setAttribute('id', 'media-oembed-iframe');

  let playerConfigured = false;

  function onPlayerReady(event) {
    event.target.playVideo();
  }

  function actionProcessor(evt) {
    // Manage Youtube video.
    if (evt.data === 'play') {
      const youtubeIframe = document.querySelector(
        'iframe[src*="youtube.com"]',
      );

      if (youtubeIframe !== undefined && youtubeIframe.src !== undefined) {
        if (!playerConfigured) {
          let youtubeURL = String(youtubeIframe.src);
          youtubeURL = youtubeURL.replace(/autoplay=0/gi, 'autoplay=1');
          youtubeURL = youtubeURL.replace(/controls=0/gi, 'controls=1');
          youtubeURL += '&enablejsapi=1';
          youtubeIframe.src = youtubeURL;
          youtubeURL = undefined;

          // eslint-disable-next-line no-unused-vars
          const youtubePlayer = new window.YT.Player(youtubeIframe.id, {
            events: {
              onReady: onPlayerReady,
            },
          });

          playerConfigured = true;
        }
      }
    }
  }

  // Setup the event listener for messaging.
  if (window.addEventListener) {
    window.addEventListener('message', actionProcessor, false);
  } else {
    window.attachEvent('onmessage', actionProcessor);
  }
});

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc