Рекомендации по остановке видео на YouTube при срабатывании клика - PullRequest
0 голосов
/ 18 ноября 2011

Я настроил некоторый тестовый код, который загружает видео на YouTube, а затем событие щелчка jquery по ссылке, которую я планирую остановить, но в тот момент, когда я нажимаю на ссылку, я получаю сообщение об ошибке: Uncaught TypeError:Object [object Object] не имеет метода stopVideo

Кто-нибудь может подсказать, где я могу ошибаться?

 <div id="container">
    <a href="#">This is the link</a>

    <br /><br />
    <br /><br />

    <div id="player"></div>
</div>


 <script>
        var tag = document.createElement('script');
        tag.src = "http://www.youtube.com/player_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 onYouTubePlayerAPIReady() {
            player = new YT.Player('player', {
            height: '390',
            width: '640',
            videoId: 'u1zgFlCw8Aw'
            });
        }

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

        $(document).ready(function() {
            $('a').click(function(e) {
                player.stopVideo();
                e.preventDefault();
            });
        });
 </script>

1 Ответ

3 голосов
/ 18 ноября 2011

Ваш фрагмент кода работает как задумано в скрипке .Кроме того, API кадров YouTube не будет работать по протоколу file:/// из-за ограничений в реализации postMessage.

Ранее я создал пользовательскую реализацию API YouTube, доступную по адресу API iframe YouTube: как мне управлять плеером iframe, который уже находится в HTML? .Я успешно выполнил метод stopVideo по протоколу file:///.

Если вы запускаете свой код в Интернете, я могу вспомнить только одну другую причину: вы пытаетесь щелкнуть ссылку раньшеигрок готов.Чтобы исправить это, объедините ваши функции:

    function onPlayerReady(event) {
        event.target.playVideo();
        $('a').click(function(e) { //<--- Binds event to ALL anchors! Are you sure?
            player.stopVideo();
            e.preventDefault();
        });
    });
...