Почему YouTube API выдает ошибку YT is not defined?

209
04 марта 2019, 21:30

Мой js выглядит так:

    var tag = document.createElement('script');
    tag.src = "https://www.youtube.com/player_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
    var player;
    function onYouTubePlayerAPIReady() {
        player = new YT.Player('ytplayer', {
            height: '360',
            width: '640',
            videoId: 'ZF_1vqGZgw0',
            events: {
             'onReady': onPlayerReady
            }
        });
    }
    function onPlayerReady(event) {
      event.target.playVideo();
    }
    onYouTubePlayerAPIReady();

в разметке:

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

Браузер выдает ошибку:

Uncaught ReferenceError: YT is not defined

Что я делаю не так???

Решил проблему, код с решенной пробелмой прикрепляю снизу.

**

$(document).ready(function () {
    function loadPlayer() {
        if (typeof(YT) == 'undefined' || typeof(YT.Player) == 'undefined') {
            var tag = document.createElement('script');
            tag.src = "https://www.youtube.com/iframe_api";
            var firstScriptTag = document.getElementsByTagName('script')[0];
            firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
            window.onYouTubePlayerAPIReady = function () {
                onYouTubePlayer();
            };
        }
    }
    var player;
    function onYouTubePlayer() {
        player = new YT.Player('ytplayer', {
            height: '360',
            width: '640',
            videoId: 'ZF_1vqGZgw0',
            events: {
                'onReady': onPlayerReady,
            }
        });
    }
    function onPlayerReady(event) {
        event.target.playVideo();
    }

    $(function () {
        loadPlayer();
    })
});
Answer 1

Решению проблемы помог ответ.

Адаптированный автором вопрос код:

$(document).ready(function () {
    function loadPlayer() {
        if (typeof(YT) == 'undefined' || typeof(YT.Player) == 'undefined') {
            var tag = document.createElement('script');
            tag.src = "https://www.youtube.com/iframe_api";
            var firstScriptTag = document.getElementsByTagName('script')[0];
            firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
            window.onYouTubePlayerAPIReady = function () {
                onYouTubePlayer();
            };
        }
    }
    var player;
    function onYouTubePlayer() {
        player = new YT.Player('ytplayer', {
            height: '360',
            width: '640',
            videoId: 'ZF_1vqGZgw0',
            events: {
                'onReady': onPlayerReady,
            }
        });
    }
    function onPlayerReady(event) {
        event.target.playVideo();
    }
    loadPlayer();
});
READ ALSO
Как Ajax`ом забрать JS c Web-морды IP камеры?

Как Ajax`ом забрать JS c Web-морды IP камеры?

У нас в компании есть внутренний сайт,на котором есть доступ к IP камерам, суть такова - нажимаем на иконку камеры и выводится изображение,...

167
:root Angular 5

:root Angular 5

Мне нужно динамически применить некоторые CSS custom properties в :root{} Как я могу это сделать? Заранее,спасибо

177
Переход от Jquery на чистый JS($(this))

Переход от Jquery на чистый JS($(this))

Меня попросили избавиться от Jquery и написать весь код на js, проблема в том, что я не очень понимаю как мне заменить $(this)Например

139