YouTube api活动没有与adobe muse开火

时间:2016-06-13 15:43:29

标签: javascript jquery youtube youtube-api html5-video

我的客户想要一个包含4个嵌入式YouTube视频的页面,当您点击下一个视频时会暂停,因此一次只能播放一个。听起来很容易,对吗?

问题是,他希望将整个网站保留在adobe muse中,我发现了一个允许我轻松插入jquery / js代码的小部件。我使用this fiddlethread from 2014稍微修改过的版本H2 documentation for the DATE Type我看起来非常有前途和稳定但不知何故,当我在网络服务器上传页面时,它无法正常工作。它虽然在Fiddle中起作用。

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

function onYouTubeIframeAPIReady() {
    console.log('api_ready');
    var $ = jQuery;
    var players = [];
    $('iframe').filter(function() {
        return this.src.indexOf('http://www.youtube.com/') === 0;
    }).each(function(k, v) {
        console.log('iframes');
        var src1 = $(this).attr('src');
        $(this).attr('src', src1 + "?enablejsapi=1");
        if (!this.id) { this.id='embeddedvideoiframe' + k; }
        players.push(new YT.Player(this.id, {
            events: {
                'onStateChange': function(event) {
                    console.log('State_changed: ' + event.data);
                    if (event.data == YT.PlayerState.PLAYING) {
                        $.each(players, function(k, v) {
                            if (this.getIframe().id != event.target.getIframe().id) {
                                this.pauseVideo();
                            }
                        });
                    }
                }
            }
        }));
        console.log(players);
    });
}

我的控制台输出如下所示:

api_inserted
api_ready
iframes
[X]
iframes
[X, X]
iframes
[X, X, X]
iframes
[X, X, X, X]

1 个答案:

答案 0 :(得分:0)

我问过我的一位好朋友,我们解决了这个问题。

iframe需要“enablejsapi = 1”,我添加了“?”之前,这是错误的。只需要一个“?”在视频ID和所有其他属性被分为“&”之后。

正确的代码是:

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

function onYouTubeIframeAPIReady() {
    console.log('api_ready');
    var $ = jQuery;
    var players = [];
    $('iframe').filter(function() {
        return this.src.indexOf('http://www.youtube.com/') === 0;
    }).each(function(k, v) {
        console.log('iframes');
        var src1 = $(this).attr('src');
        $(this).attr('src', src1 + "&enablejsapi=1");
        if (!this.id) { this.id='embeddedvideoiframe' + k; }
        players.push(new YT.Player(this.id, {
            events: {
                'onStateChange': function(event) {
                    console.log('State_changed: ' + event.data);
                    if (event.data == YT.PlayerState.PLAYING) {
                        $.each(players, function(k, v) {
                            if (this.getIframe().id != event.target.getIframe().id) {
                                this.stopVideo();
                            }
                        });
                    }
                }
            }
        }));
        console.log(players);
    });
}
相关问题