仅在鼠标悬停时显示控制栏 - Jwplayer 7.1.1

时间:2015-09-28 09:34:29

标签: jwplayer jwplayer7

我想仅在鼠标悬停事件中显示控制栏。我能够在Jwplayer 7.0.3中使用类似的东西实现这一目标:

var controlbarDiv = playerFrame.querySelectorAll('.jw-controls .jw-controlbar');
playerFrame.onmouseout = function () {
  playerFrame.className += ' ' + 'jw-flag-user-inactive';
}
controlbarDiv[0].onmouseover = function() {
  playerFrame.classList.remove('jw-flag-user-inactive');
}

播放器(playerFrame)有自己的鼠标悬停以删除用户非活动类,但现在,在7.1.1中,不会触发鼠标悬停事件。如果我将它添加到我的playerFrame中,它会表现得很奇怪,但仍然无法显示控制栏。任何改变可能导致这种想法的想法?

感谢。

LE:我添加了这些行

playerFrame.onmouseout = function() {
  if (!playerFrame.classList.contains('jw-flag-user-inactive')) {
    playerFrame.className += ' ' + 'jw-flag-user-inactive';
  }
}
playerFrame.onmouseover = function() {
  if (playerFrame.classList.contains('jw-flag-user-inactive')) {
    playerFrame.classList.remove('jw-flag-user-inactive');
  }
}

这适用于Chrome和Safari,但它并不适用于Firefox。在Firefox中如果我快速移出并再次移动,我的鼠标悬停事件不会触发。但是,如果我在事件之间留下2-3秒,则会触发mouseover事件。似乎只有在悬停控制栏时Firefox触发器中的鼠标悬停事件才会触发。

1 个答案:

答案 0 :(得分:1)

虽然更新没有合理的解决方案,但我们必须让它发挥作用。

所以,我这样做了:

var targetId = 'player';

$jwplayer(targetId).onReady(function(){

    this.onPlay(callbackOnPlay);

});

var callbackOnPlay = function(){

    var player = $('#' + targetId),
    controlbar = (player.length) ? player.find('.jw-controls') : $('.jw-controls');

    player.onPlay()

    if (player.length && controlbar.length) {

        //Delay 2s
        setTimeout(function() {
           controlbar.fadeOut();
        }, 2000);

        //Add hover event
        player.hover(
           function() {
              controlbar.fadeIn();
           }, function() {
              controlbar.fadeOut();
           }
        );

    }

};