YouTube的player.loadPlaylist和cuePlaylist自2013-01-30起无效

时间:2013-01-31 04:53:34

标签: youtube-api

请原谅我,如果这个问题出现在错误的地方,但谷歌不赞成的开发者论坛建议我去这里。

以下是一些用于演示此问题的大量简化代码:

<!DOCTYPE html>
<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
        <script type="text/javascript">
            $(
                function() {
                    /*
                    This one second delay is just there to give the player time
                    to load.  It's more complicated in my proper implementation.
                    */
                    window.setTimeout(
                        function() {
                            var player = document.getElementById('player');
                            /*
                            Shocker, it doesn't work, regardless of playlist ID.
                            */
                            player.loadPlaylist(
                                {
                                    list:  'PL63FA01F86C3FE49A'
                                }
                            );
                        },
                        1000
                    );
                }
            );
        </script>
    </head>
    <body>
        <object data="http://www.youtube.com/apiplayer?enablejsapi=1&version=3" height="360" id="player" width="600">
            <param name="AllowScriptAccess" value="always">
            <param name="movie" value="http://www.youtube.com/apiplayer?enablejsapi=1&version=3">
        </object>
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

本周,我在编码冲刺时偶然发现了这个问题:

loadPlaylist / cuePlaylist方法需要 list参数和listType参数(在文档中不是很清楚)。

所以,代码:

player.loadPlaylist(
    {
         list:  'PL63FA01F86C3FE49A',
         listType: 'playlist'
    }
);

使用SWF和HTML嵌入都可以正常工作。杰夫波斯尼克对这个问题的回答的推荐当然适用,但我已经测试过它在两种情况下都有效。

listType可以是&#39; list&#39;,&#39; search&#39;或者&#39; user_uploads&#39;和list分别表示视频ID的列表ID或数组,搜索查询,用户ID。

答案 1 :(得分:0)

在回答问题之前对你的代码做了一些评论:首先,如果你确定需要使用AS3无边框播放器,你真的应该使用SWFObject将它添加到你的页面以确保使用了正确的<object><embed>标记。如果您只指定<object>标记,那么它只能在Internet Explorer中使用。

此外,您的代码中应该有一个onYouTubePlayerReader(playerId)处理程序,以检测播放器何时完全加载并准备好响应API调用。这比通过window.setTimeout()尝试这样做要可靠得多。

关于您的实际问题,我不确定无格式AS3播放器曾支持使用播放列表。这段代码以前是否最近停止了?我想你如果你真的不想要控件(但隐藏控件会从播放列表体验中删除),那么使用iframe embedded player和指定controls=0会有更好的体验。