Uncaught TypeError: Невозможно прочитать свойство 'playVideo' из неопределенного - PullRequest
1 голос
/ 05 февраля 2020

при загрузке страницы консоль Chrome выдает мне следующую ошибку: Uncaught TypeError: Невозможно прочитать свойство 'playVideo' из неопределенного

<script>
  // Load the IFrame Player API code asynchronously.
  var tag = document.createElement('script');
  tag.src = "https://www.youtube.com/iframe_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

  // Replace the 'ytplayer' element with an <iframe> and
  // YouTube player after the API code downloads.
  var player;

  function onYouTubeIframeAPIReady() {
    player = new YT.Player('ytplayer', {
      height: '390',
      width: '640',
      playerVars: {
        autoplay: 0
      },
      videoId: 'bvtwWhKdxhM'
    });
  }
  $(window).scroll(function() {
    $("iframe").each(function() {
      if ($(window).scrollTop() > $(this).offset().top - 800) {
        $(this).css('opacity', 1);
        player.playVideo();
      } else {
        $(this).css('opacity', 1);
        player.stopVideo();
      }
    });
  });
</script>

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Я попытался запустить код, и он работает.

Это вся моя страница:

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>youtube demo</title>

  <div id="ytplayer"></div>

 <script
  src="https://code.jquery.com/jquery-3.4.1.min.js"
  integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
  crossorigin="anonymous"></script>
<script>
  // Load the IFrame Player API code asynchronously.
  var tag = document.createElement('script');
  tag.src = "https://www.youtube.com/iframe_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

  // Replace the 'ytplayer' element with an <iframe> and
  // YouTube player after the API code downloads.
  var player;

  function onYouTubeIframeAPIReady() {
    player = new YT.Player('ytplayer', {
      height: '390',
      width: '640',
      playerVars: {
        autoplay: 0
      },
      videoId: 'bvtwWhKdxhM'
    });
  }
  $(window).scroll(function() {
    $("iframe").each(function() {
      if ($(window).scrollTop() > $(this).offset().top - 800) {
        $(this).css('opacity', 1);
        player.playVideo();
      } else {
        $(this).css('opacity', 1);
        player.stopVideo();
      }
    });
  });
</script>

</body>
</html>
0 голосов
/ 05 февраля 2020

Пожалуйста, проверьте функцию onYouTubeIframeAPIReady получает вызов или нет. Для тестирования просто поместите console.log ('onYouTubeIframeAPIReady') в функцию onYouTubeIframeAPIReady и проверьте в консоли.

...