嵌入多个视频会导致youtube api出错

时间:2013-06-22 00:12:36

标签: air youtube-api youtube-javascript-api

我正在使用多个HTMLLoader在YouTube应用中嵌入YouTube视频(每个加载一个),当我添加两个以上时,它会导致所有玩家超过秒的API出错。玩家似乎工作正常,但事件从未被调用,并且player.pauseVideo未定义。

TypeError: Result of expression 'b' [undefined] is not an object.
at http://s.ytimg.com/yts/jsbin/www-embed-player-vflJ4hakx.js : 206
at http://s.ytimg.com/yts/jsbin/www-embed-player-vflJ4hakx.js : 205
at http://s.ytimg.com/yts/jsbin/www-embed-player-vflJ4hakx.js : 204
at http://s.ytimg.com/yts/jsbin/www-embed-player-vflJ4hakx.js : 199

我的嵌入代码:

function SetupYoutubePlayer(divName, videoID) {
    _videoID = videoID;
    _divName = divName;
    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 _videoID;
var _divName;

var player;
function onYouTubeIframeAPIReady() {
    player = new YT.Player(_divName, {
        height: '100%',
        width: '100%',
        wmode: 'opaque',
        autohide: '1',
        modestbranding: '1',
        frameborder: "0",
        showinfo: '0',
        videoId: _videoID,
        playerVars: { 
            'wmode': 'opaque', 
            'rel': 0, 
            'autohide': 1,
            'modestbranding': 1,
            'frameborder': 0,
            'showinfo': 0,
        },
        events: {
            'onStateChange': onPlayerStateChange
        }
    });
}

1 个答案:

答案 0 :(得分: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);

只需执行一次,即可获取YT.Player定义和相关API。如果确保只执行一次,那么事情是否按预期工作?