javascript - 如何使视频控件显示在 Firefox 中?

标签 javascript jquery html html5-video mediaelement.js

当我将视频控制栏悬停在 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")
        }
    });
}

最佳答案

你的脚本中有这个:

player.hover(_mouseOverHandler, _mouseOutHandler);

所以这两个函数都是在悬停时执行的(这解释了出现和消失)。最好创建一个包含 if/else 语句中所需内容的函数

关于javascript - 如何使视频控件显示在 Firefox 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144173/

相关文章:

javascript - 检测对元视口(viewport)缩放的支持

javascript - 使用 jquery 或正则表达式用点分割字符串但点不在单引号中

php - 将动态 jQuery post 传递给 PHP

javascript - 使用内部页面引用隐藏/取消隐藏 HTML 中的元素

javascript - Jquery 文本字段最多 3 次验证

javascript - 在 append() 元素之后的 VueJS 中,click 方法不起作用

html - 如何在 Firefox 的连字符处启用换行符

javascript - 计算两个 div 数字之间的百分比变化

javascript - 变量未传递给函数

jquery - 表格行不会自动滚动。脚本 1 滚动,脚本 2 不滚动。为什么?