【问题标题】:How do I make the video controls show up in firefox?如何让视频控件显示在 Firefox 中?
【发布时间】:2015-12-07 22:05:03
【问题描述】:

当我将视频控制栏悬停在 Chrome 中时,Safari 会显示它。但是当我将它悬停在Firefox中时,它没有显示。不知道我的js代码是不是不支持firefox。但是当我在Firefox中检查它时,控件不断出现和消失。下面是我的代码。谁能帮我这个?谢谢。

HTML

        <video poster="http://dummyimage.com/320x205/852285/fff" preload="auto">

           <source type="video/mp4" src="http://www.w3schools.com/html/movie.mp4" />
        </video>

JS

        <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
        <script src='http://cdnjs.cloudflare.com/ajax/libs/mediaelement/2.13.1/js/mediaelement.js'></script>

// Video Player
    function videoPlayer() {
        // Exit full screen when video is done playing
        var video = document.getElementsByTagName("video")[0];
        video.addEventListener("ended", function(e) { 
            video.webkitExitFullScreen()
        });

    var player = $('.video-player'),
    controls = player.find('.vid-play-btn-wrap'),
    wrapper = player.find('video'),
    video = player.find('video').get(0),

    isPlaying = false,
    settings = {},
    media = new MediaElement(video, settings),
    $media = $(media);

    $media.on('play', _playHandler);
    $media.on('pause', _pauseHandler);
    $media.on('ended', _endedHandler);

    player.click(_togglePlayPause);
    player.hover(_mouseOverHandler, _mouseOutHandler);

    function _togglePlayPause() {
        isPlaying ? media.pause() : media.play();
    }

    function _mouseOverHandler() {
        if(!isPlaying) { return; }
        // controls.fadeIn('fast');
    }

    function _mouseOutHandler() {
        if(!isPlaying) { return; }
        // controls.fadeOut('fast');
    }

    function _endedHandler() {
        isPlaying = false;
        video.load();
        controls.show();
    }

    function _playHandler() {
        isPlaying = true;
        controls.hide();
    }

    function _pauseHandler() {
        isPlaying = false;
    }

    $('video').hover(function toggleControls() {
        if (this.hasAttribute("controls")) {
            this.removeAttribute("controls")
        } else {
            this.setAttribute("controls", "controls")
        }
    });
}

【问题讨论】:

  • 遇到了同样的问题,请问您找到解决方法了吗? (控件最终会出现,而且时间量永远不会相同)

标签: javascript jquery html html5-video mediaelement.js


【解决方案1】:

你的脚本中有这个:

player.hover(_mouseOverHandler, _mouseOutHandler);

所以这两个函数都是在悬停时执行的(这解释了出现和消失)。在 if/else 语句中创建一个包含您想要的两件事的函数可能会更好

【讨论】:

  • 但我想悬停以显示控件。适用于 chrome 和 safari 作品。但是当鼠标悬停时 Firefox 不工作。
  • 让我知道如何解决这个问题?因此,如果我将视频悬停,控件将显示在 Firefox 中。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多