【问题标题】:Embedding multiple videos causes error in youtube api嵌入多个视频会导致 youtube api 出错
【发布时间】:2013-06-22 00:12:35
【问题描述】:

我正在使用多个 HTMLLoader 将 youtube 视频嵌入 Air 应用程序(每个加载程序一个),当我添加两个以上时,它会导致 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
        }
    });
}

【问题讨论】:

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


    【解决方案1】:

    您似乎在重复调用以下行:

    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。如果您确保只执行一次,事情会按预期工作吗?

    【讨论】:

    • 这些行每个HTMLLoader只调用一次,每个加载器都有一个视频
    • 抱歉,如果这对更熟悉 Adob​​e Air 的人来说是显而易见的,但每个 HTMLLoader 是否都有完全独立的 JavaScript 环境?
    • 是的,我认为它们的行为类似于浏览器中的单独选项卡
    • 如果您的问题只出现在您有多个 HTMLLoader 实例的情况下,那么这里有某种共享环境状态在起作用,但不幸的是,我对 Air 运行时的了解不够,无法准确诊断是什么继续。
    • 经过进一步测试,我发现只有当我从远程站点加载页面时才会发生这种情况,从 file:// 加载工作正常
    猜你喜欢
    • 2015-10-19
    • 2021-02-26
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 2021-12-04
    • 2012-06-25
    相关资源
    最近更新 更多