首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YouTube api事件未使用adobe muse触发

YouTube api事件未使用adobe muse触发
EN

Stack Overflow用户
提问于 2016-06-13 23:43:29
回答 1查看 81关注 0票数 0

我的客户想要一个包含4个youtube视频的页面,当你点击下一个视频时会暂停,这样一次只有一个在播放。听起来很简单,对吧?

问题是,他想让整个网站保持adobe muse,我找到了一个小工具,可以让我很容易地插入jquery/js代码。我使用的是我在thread from 2014上发现的一个稍微修改过的this fiddle版本,它看起来非常有前途和稳定,但不知何故,当我将页面上传到我的when服务器上时,它就不能工作了。不过,它在小提琴上是有效的。

代码语言:javascript
复制
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);
    });
}

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

代码语言:javascript
复制
api_inserted
api_ready
iframes
[X]
iframes
[X, X]
iframes
[X, X, X]
iframes
[X, X, X, X]
EN

回答 1

Stack Overflow用户

发布于 2016-06-14 01:31:13

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

iframes需要"enablejsapi=1“,我给它加上了一个"?”以前,是错误的。只需要有一个“?在视频id和所有其他属性之后用"&“分隔。

正确的代码是:

代码语言:javascript
复制
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);
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37793995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档