【问题标题】:Start youtube video on hover/mouseover在悬停/鼠标悬停时启动 youtube 视频
【发布时间】:2013-12-20 15:22:46
【问题描述】:

我正在尝试让 youtube 视频在悬停时开始播放。当用户将鼠标悬停在另一个视频上时,它会暂停(而不是停止)......

我卡在悬停命令上。有人可以帮我解决吗?

该页面有 16 个视频,这是来自 jsfiddle 的工作代码,其中包含 3 个视频作为示例。

http://jsfiddle.net/sebwhite/gpJN4/

视频:

<iframe id="player" width="385" height="230" src="http://www.youtube.com/embed/erDxb4IkgjM?rel=0&wmode=Opaque&enablejsapi=1;showinfo=0;controls=0" frameborder="0" allowfullscreen></iframe>

JAVASCRIPT:

function onYouTubeIframeAPIReady() {
 player = new YT.Player('player', {
     events: {
         'onStateChange': onPlayerStateChange
     }
 });

onYouTubeIframeAPIReady();
function onPlayerStateChange(event) {
 if (event.data == YT.PlayerState.PLAYING) {
     player1.pauseVideo();
     player2.pauseVideo();
 }

【问题讨论】:

  • 嗨 Seb,试试这个链接stackoverflow.com/questions/15398745/…
  • 嗨@Phil,我特别不希望它在点击时开始,还是我完全错过了重点?我的大脑为此而超负荷运转,我不知道为什么我无法弄清楚。
  • 我想你可以在视频播放器的顶部画一个透明的 div 并停止点击?
  • 我不反对停止点击——我只是想在鼠标悬停时播放视频,人们可以点击暂停或双击全屏...
  • 在这种情况下,Pauls 的回答看起来像下面这样吗?

标签: javascript youtube onmouseover youtube-javascript-api


【解决方案1】:

更新的小提琴

试试这个:

 var $$ = function(tagname) { return document.getElementsByTagName(tagname); }
    
 function onYouTubeIframeAPIReady() {
     var videos = $$('iframe'), // the iframes elements
         players = [], // an array where we stock each videos youtube instances class
         playingID = null; // stock the current playing video
     for (var i = 0; i < videos.length; i++) // for each iframes
     {
         var currentIframeID = videos[i].id; // we get the iframe ID
         players[currentIframeID] = new YT.Player(currentIframeID); // we stock in the array the instance
         // note, the key of each array element will be the iframe ID
         
         videos[i].onmouseover = function(e) { // assigning a callback for this event
             if (playingID !== currentHoveredElement.id) {
               players[playingID].stopVideo();
             }
             var currentHoveredElement = e.target;
             if (playingID) // if a video is currently played
             {
                 players[playingID].pauseVideo();
             }
             players[currentHoveredElement.id].playVideo();
             playingID = currentHoveredElement.id;
         };
     }
    
 }
 onYouTubeIframeAPIReady();

小提琴:

http://jsfiddle.net/gpJN4/3/

【讨论】:

  • 称我为白痴,但在我已经拥有的代码的上下文中/拥有多个视频的场景?抱歉,我只是想了解一下。
  • 唯一的问题是视频不会暂停。我正在尝试获取它,以便您可以滚动视频,并且您的鼠标所在的视频将一直播放,直到您滚动到另一个视频为止。
  • 太棒了。它工作得很好,尽管(不要恨我),但我找到了一种让它不起作用的方法。如果您将其中一个视频设置为自动播放,那么当您将鼠标悬停在其他视频上时,它们都会播放。有没有办法添加对暂停自动播放视频的支持?
猜你喜欢
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 2012-01-21
  • 1970-01-01
  • 2011-08-04
  • 2018-09-03
相关资源
最近更新 更多