angular1.x onyoutubeiframeapiready - PullRequest
       6

angular1.x onyoutubeiframeapiready

0 голосов
/ 21 сентября 2018

Я разрабатываю веб-сайт, используя Angles JS 1.x.

Я использую API-интерфейс iframe для воспроизведения видео на YouTube.

Вот моя проблема.

КогдаЯ вхожу на страницу воспроизведения в первый раз, я вижу воспроизведение видео с YouTube при нажатии кнопки воспроизведения видео.

Затем вернитесь на предыдущую страницу, повторно войдите в ту же страницу воспроизведения и нажмите кнопку воспроизведения.снова нажмите кнопку, чтобы увидеть сообщение об ошибке, как показано ниже.

"При воспроизведении возникла проблема. (Идентификатор воспроизведения: ***) Нажмите, чтобы повторить попытку"

Это всегда происходит, когда я повторяю вышеописанное.шаг.Но когда я обновляю страницу, видео воспроизводится как обычно.

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

Вот мой код.

- CarDetail.html

- angular-youtube.js (от http://blog.oxrud.com/posts/creating-youtube-directive/)

angular.module ('YouTubeApp', [])

.constant('YT_event', {
    STOP: 0,
    PLAY: 1,
    PAUSE: 2
})

.directive('youtube', function ($window, YT_event, youTubeApiService) {
    return {
        restrict: "E",

        scope: {
            height: "@",
            width: "@",
            videoid: "@"
        },

        template: '<div></div>',

        link: function (scope, element, attrs, $rootScope) {
            var len = $('script').filter(function () {
                return ($(this).attr('src') == 'https://www.youtube.com/iframe_api');
            }).length;

            if (len === 0) {
                var tag = document.createElement('script');
                tag.src = "https://www.youtube.com/iframe_api";
                var firstScriptTag = document.getElementsByTagName('script')[0];
                firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
            }

            var player;

            youTubeApiService.onReady(function () {
                player = setupPlayer(scope, element);
            });

            function setupPlayer(scope, element) {
                return new YT.Player(element.children()[0], {
                    playerVars: {
                        autoplay: 0,
                        html5: 1,
                        theme: "light",
                        modesbranding: 0,
                        color: "white",
                        iv_load_policy: 3,
                        showinfo: 1,
                        controls: 1
                    },

                    height: scope.height,
                    width: scope.width,
                    videoId: scope.videoid

                });
            }

            scope.$watch('videoid', function (newValue, oldValue) {
                if (newValue == oldValue) {
                    return;
                }

                if (typeof player !== "undefined") {
                    // player.cueVideoById(scope.videoid);
                }
            });

            scope.$watch('height + width', function (newValue, oldValue) {
                if (newValue == oldValue) {
                    return;
                }

                if (typeof player !== "undefined") {
                    player.setSize(scope.width, scope.height);
                }
            });

            scope.$on(0, function () {
                if (typeof player !== "undefined") {
                    player.seekTo(0);
                    player.stopVideo();
                }
            });

            scope.$on(1, function () {
                if (typeof player !== "undefined") {
                    player.playVideo();
                }
            });

            scope.$on(2, function () {
                if (typeof player !== "undefined") {
                    player.pauseVideo();
                }
            });
        }
    };
})

.factory("youTubeApiService", function ($q, $window) {

    var deferred = $q.defer();
    var apiReady = deferred.promise;

    $window.onYouTubeIframeAPIReady = function () {
        deferred.resolve();
    };

    return {
        onReady: function (callback) {
            apiReady.then(callback);
        }
    };

});

- загрузкаangular-youtube.js

angular.module ('app') .constant ('JQ_CONFIG', {...}) .config (['$ ocLazyLoadProvider', функция ($ ocLazyLoadProvider) {$ ocLazyLoadProvider.config ({debug: true, события: true, модули: [{name: 'YouTubeApp', файлы: [HOMEPAGE_ROOT + '/webpage/bower_components/angular-youtube/angular-youtube.js']}]});}]);

Можно ли воспроизводить видео каждый раз, когда я вхожу на страницу воспроизведения без обновления?

Любая помощь будет признательна.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...