API YouTube и запросы на разные источники - PullRequest
0 голосов
/ 10 мая 2018

YouTube начал блокировать запросы на разные источники?

Я использую полноэкранное видео героя автозапуска на своем веб-сайте, и оно долгое время работало правильно В течение последних нескольких недель он перестал работать, и у меня есть следующая ошибка в журналах.

Не удалось выполнить 'postMessage' в 'DOMWindow': указан целевой источник ('https://www.youtube.com') не соответствует источнику окна получателя (' https://tbrogames.github.io').

За ответ на этот вопрос

Я попытался сменить хост между http и https, чтобы посмотреть, исправит ли это, но это не так.

Мой сайт, который выдает ошибку: https://tbrogames.github.io/

Мне удалось найти более крупный игровой сайт, на котором тоже есть эта проблема. https://playbattlegrounds.com/main.pu

Они также используют видео YouTube в качестве видео героя / заставки; и он больше не работает, выдавая ту же ошибку.

Соответствующий javascript можно найти здесь https://github.com/tbrogames/tbrogames.github.io/blob/master/js/defer.js

Тем не менее, это работало долгое время, и я не менял код. Вот почему я думаю, что это изменение, которое сделал YouTube.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

YouTube это позволяет. Убедитесь, что вы загружаете с URL-адреса, такого как:

https://www.youtube.com/embed/HIbAz29L-FA?modestbranding=1&playsinline=0&showinfo=0&enablejsapi=1&origin=https%3A%2F%2Fintercoin.org&widgetid=1

Обратите внимание на компонент origin, а также enablejsapi = 1. Источник должен соответствовать вашему домену, а затем он будет внесен в белый список и будет работать.

0 голосов
/ 06 июня 2018

Я думаю, что ошибка на самом деле вводит в заблуждение. У меня была та же проблема, но я считаю, что на самом деле это хром, который больше не автоматически воспроизводит героя. Я получаю эту ошибку: Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first. https://developers.google.com/web/updates/2017/09/autoplay-policy-changes

Исправлением для меня было отключение звука на видео в Javascript До воспроизведения видео. Версия iframe для встраивания с теми же свойствами будет не autoplay

<script>
      // 2. This code loads 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);

      // 3. This function creates an <iframe> (and YouTube player)
      //    after the API code downloads.
      var player;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('ythero', {
          videoId: '3FjTef9gn3Q',
          height: '100%',
          width: '100%',
          playerVars: {
            rel: 0,
            controls: 0,
            showinfo: 0,
            autoplay: 1,
            loop: 1,
            playlist: '3FjTef9gn3Q',
            modestbranding: 1
          },
          events: {
            'onReady': onPlayerReady,
          }
        });
      }

      // 4. The API will call this function when the video player is ready.
      function onPlayerReady(event) {
        event.target.mute();
        event.target.playVideo();
      }
    </script>
...