Youtube API - onclick 播放视频 - 跨浏览器

Posted

技术标签:

【中文标题】Youtube API - onclick 播放视频 - 跨浏览器【英文标题】:Youtube API - onclick play video - cross browser 【发布时间】:2013-07-02 20:40:11 【问题描述】:

我正在使用此脚本在单击按钮时淡入和自动播放 YouTube 视频,并在视频播放完毕时自动淡出(此外,它还应该从顶部滚动 90 像素)。该脚本在 Safari 和 Chrome 中完美运行,但在 Firefox 3.6 中它会在视频中淡出但不会自动播放 - 用户必须单击播放器上的播放按钮,并且 scrollTop 由于某种原因无法正常工作。并且在 Internet Explorer 8 中与 Firefox 中的问题相同,但视频播放完毕后甚至不会淡出。

请知道可能是什么问题,我该如何解决?非常感谢,非常感谢任何帮助。

        <script src="http://www.youtube.com/player_api"></script>
        <script>
            // create youtube player
            var player;
            function onYouTubePlayerAPIReady() 
                player = new YT.Player('vid', 
                    height: '539',
                    width: '958',
                    videoId: 'wgDQoA7cqsQ',
                    events: 
                        'onStateChange': onPlayerStateChange
                        
                );
            
            // when video ends
            function onPlayerStateChange(event)         
                if(event.data === 0)             
                    $("#vid").fadeOut(500);
                
            
            function startVideo() 
                $("#vid").fadeIn(2000); 
                player.playVideo();
                $("html, body").animate( scrollTop: 90 , 600); return false; 
            ;
        </script>

【问题讨论】:

JSfiddle 会很好 【参考方案1】:

我认为在某些浏览器中,视频播放器还没有准备好重现视频,但是您可以附加一个事件以了解 api 何时准备好播放视频(onReady 事件),这是通过在构造函数。 然后,当构建器告诉您准备就绪时,您可以在那里复制您的视频。 关于滚动问题,可能是视频播放器还没有初始化,所以没有playVideo功能,这就是为什么动画没有向上滚动,因为你的代码坏了。

我还注意到一些浏览器带有 display:none 属性的容器表现不佳,为了解决这个问题,我使用 width 和 height = 1px 隐藏了容器,然后当我想查看我会动态更改视频的大小。

这是一个例子:

var player = new YT.Player( containerId, 
    height: 'auto',
    width: 'auto', 
    suggestedQuality:"hd720", 
    "videoId":"ejWGThDRllE", 
    playerVars:  'autoplay': 0, 'controls': 1,'autohide':1,rel:0,hd:1 , 
    events:  
        'onReady': onPlayerReady, 
        'onStateChange': onPlayerStateChange
    
);
container = document.getElementById(containerId);
container.style.width = "1px";
container.style.height = "1px";

onPlayerReady(event)
    player.playVideo(); 
    var playerr = document.getElementById(self.containerId);
    playerr.style.display = "block";
    playerr.style.width = "100%";
    playerr.style.height = "100%";

希望对你有帮助。

【讨论】:

【参考方案2】:

尝试用这个包装你的脚本,如果还没有完成:

$( document ).ready(function() 
    //Script
);

它使我免于一些奇怪的行为!

【讨论】:

我刚刚按照您的建议尝试过,但现在绝对没有任何反应:) 看起来很奇怪...... $(document).ready 不应该造成麻烦......

以上是关于Youtube API - onclick 播放视频 - 跨浏览器的主要内容,如果未能解决你的问题,请参考以下文章

使用 YoutubeAndroidPlayerAPI 中的 YoutubePlayerView 播放私人 YouTube 视频?

无法使用 YouTube Android Player API 播放某些 Youtube 视频

通过 Youtube API (python) 检索 Youtube 播放列表信息

youtube播放器api遇到问题

Android youtube API 在一个主要活动中播放两个或多个 Youtube 播放器

YouTube Data API - 如何通过 API 获取“已保存的播放列表”